ImageMagick / Mogrify - сжать изображение программно

Я пытаюсь сжать изображение в командной строке с помощью Imagemagick в Perl (в настоящее время я могу только перевернуть его...)

system("/usr/bin/mogrify", "-flip","/var/www/images/$pid-$count.jpg");

изображение должно быть сжато по размеру на 50%, но сохранить те же размеры! Я могу изменить размер изображения отлично, но как pixelate изображение, чтобы снизить разрешение, но сохранить те же размеры?

Я надеюсь, что кто-то там может помочь.

заранее огромное спасибо

1 ответов


ImageMagick предоставляет -compress переключатель, который может делать то, что вы хотите.

-compress: используйте сжатие пикселей, заданное типом при записи изображения

выбор: Нет, BZip, факс, Group4, JPEG, JPEG2000, без потерь, LZW, RLE или Zip.

чтобы распечатать полный список типов сжатия, используйте -list compress.

указать +compress для хранения двоичного изображения в несжатом формате. По умолчанию тип сжатия указанного файла изображения.

если задано сжатие LZW, но сжатие LZW не включено, данные изображения записываются в несжатом формате LZW, который может быть прочитан декодерами LZW. Это может привести к большему, чем ожидалось GIF-файлы.

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

использовать -quality опция для установки уровня сжатия, который будет использоваться кодерами JPEG, PNG, MIFF и MPEG. Используйте -sampling-factor опция для установки коэффициента выборки, который будет использоваться кодерами JPEG, MPEG и YUV для выборки каналов цветности.


проверьте этот пример / эксперимент:

>>> du data/lena.png 
464K    data/lena.png
>>> cp data/lena.png .
>>> convert lena.png lena.jpg
>>> du lena.jpg 
76K lena.jpg           # already a lot smaller by going png --> jpeg
>>> mogrify -compress JPEG -quality 5 lena.jpg
>>> du lena.jpg 
8.0K    lena.jpg       # well, it did compress a lot and it's still viewable