изменение размера изображений в php с помощью imagemagick на хостинге 1 и 1

#php #image-processing #resize #imagemagick #gd

#php #обработка изображений #изменение размера #imagemagick #gd

Вопрос:

Мне не хватает памяти, когда я разрешаю пользователям изменять размер изображений современных камер 12MP или выше. Даже некоторые изображения размером всего 900 кб занимают намного больше места в памяти, потому что это зависит от размера пикселя (я думаю), поэтому…

У меня есть SSH-доступ к общему серверу 1 amp; 1, и я следовал их инструкциям, чтобы загрузить imagemagick и настроить / создать / установить его в каталог на моем сервере. Теперь, что я должен сделать в php, чтобы сделать то же самое, что

 $originalImage = imagecreatefromjpeg($src);
$finalImage = imagecreatetruecolor($newWidth,$newHeight);
imagecopyresampled($finalImage, $originalImage, 0, 0, 0, 0, $newWidth, $newHeight, $originalWidth, $originalHeight);
imagejpeg($finalImage,$saveDest,$jpeg_quality);
  

надеюсь, переменные объясняются сами собой. Я пытался разобраться с установкой расширения imagick, но я действительно заблудился, когда прочитал о PECL и PEAR, и я действительно не хочу каким-то образом испортить рабочую установку php.

Комментарии:

1. О чем вы спрашиваете? Вам нужна помощь в установке модуля или вы хотите знать, можно ли более эффективно запускать опубликованный вами код с помощью imagemagick?

2. Я думаю, что мой лимит памяти на моем сервере составляет 60 Мб, и попытка запустить этот код с большим изображением, таким как 1920X1080, завершается неудачей. Я слышал, что imagemagick лучше справляется с большими изображениями, поэтому мне нужно знать php, чтобы использовать imagemagick для изменения размера изображения вместо gd

3. Можете ли вы установить расширение php? Потому что, если это не является неотъемлемой частью PHP (а скорее требует от вас отправки команд в вашу системную оболочку), это может стать немного сложнее, если вы не привыкли к такого рода вещам. imagemagick.org/script/api.php предлагает такие API, как MagickWand для PHP, iMagick и phMagick. francodacosta.com/phmagick/examples/resizing-images

Ответ №1:

 exec('/path/to/your/home/imagemagick/installation/bin/convert '.$src.' -resize '.$newWidth.'x'.$newHeight.' '.$saveDest);
  

Но убедитесь, что у вас экранированы все переменные, поступающие с пользовательского сайта. А $ saveDest доступен для записи вашим веб-сервером.

Изменения настолько велики, что вы сталкиваетесь с теми же проблемами с ограничением памяти, потому что apache / php вызывает скрипт, который ограничивает использование памяти его родительским.

Комментарии:

1. это близко, но что, если у меня есть координаты, установленные в imagecopyresampled, чтобы сначала обрезать изображение?

2. смотрите документацию imagemagick, ваши возможности безграничны. imagemagick.org/script/convert.php

Ответ №2:

Обновить php.ini файл:

 memory_limit = 2048M
  

Комментарии:

1. на общем сервере это будет невозможно.