Imagemagick является очень мощным инструментом обработки изображений для командной строки. Его часто называют Фотошопом для командной строки.

Наиболее часто imagemagick используется в Web'e для изменения размера картинки. Но как это делать правильно для PHP?

Для начала убедитесь, что imagemagick установлен:

sudo apt-get install imagemagick

Изменение размера картинки

В PHP есть модуль работы с imagemagick, но можно использовать и обычную версию командной строки и exec:

<?
exec('convert input.jpg -resize 300x300 output.jpg');
  • input.jpg — путь к оригиналу картинки
  • output.jpg — путь, куда будет сохранен результат

Вырезание квадратной картинки

Часто нужно не только уменьшить картинку, а еще и вырезать из нее квадратную область для соответствия верстке:

<?
exec('convert input.jpg -resize 50x50 -gravity Center -crop 50x50+0+0 output.jpg');

Оптимизация картинок

Часто картинки содержат в себе кучу дополнительной информации (мета-данные), которые не нужны, когда речь идет о картинках и фотках для сайта. Imagemagick умеет вырезать такой мусор:

<?
exec('convert input.jpg 50x50 -strip output.jpg');

Уровень качества и размер

Вы можете также попробовать изменить уровень сжатия для того, чтобы получить минимальный размер при приемлемом качестве:

<?
exec('convert input.jpg 50x50 -strip -quality 75 output.jpg');

-quality может принимать значения от 1 (худшее качество, размера почти нет) до 100 (лучшее качество, нереальный размер).

Список всех опций утилиты convert.