imagemagick изменения размера и качества PNG - PullRequest
17 голосов
/ 27 октября 2011

В моем приложении мне нужно изменить размер и сделать качество PNG-файлов ниже.

В полном размере PNG имеют размер 3100x4400px и 2,20 МБ дискового пространства

При выполнении следующей команды:

convert -resize 1400 -quality 10 input.png output.png

размеры изображений уменьшены до 1400x2000 с использованием дискового пространства 5,33 МБ.

Итак, мой вопрос: как я могу уменьшить размер файла?

Ответы [ 4 ]

11 голосов
/ 17 декабря 2011
  1. Вы можете дополнительно снизить качество PNG с помощью постеризации:

    https://github.com/pornel/mediancut-posterizer ( Mac GUI )

    Этооперация с потерями, которая позволяет zlib лучше сжимать.

  2. Конвертировать изображение в PNG8, используя pngquant .

    Уменьшает изображение до 256 цветов, поэтому качество зависит от типа изображения, но pngquant создает очень хорошие палитры, поэтому вы можете быть удивлены тем, как часто оно работает.* Используйте Zopfli-png или AdvPNG для лучшего повторного сжатия изображений.

    Это без потерь и рекомендуется для всех изображений, если у вас есть запасные циклы ЦП.

4 голосов
/ 27 октября 2011

На странице справки сказано, что опция -quality, используемая с PNG, устанавливает уровень сжатия для zlib, где (примерно) 0 - худшее сжатие, 100 - лучшее (по умолчанию 75).Поэтому попробуйте установить -quality на 100 или даже удалить опцию.

Другой способ - указать PNG:compression-level=N, PNG:compression-strategy=N и PNG:compression-filter=N для достижения еще лучших результатов.

http://www.imagemagick.org/script/command-line-options.php#quality

2 голосов
/ 15 августа 2018

После использования imagemagick для изменения размера, вы можете сжать изображение, используя pngquant.

На Mac (с домашним пивом) brew install pngquant, затем:

pngquant <filename.png>

Это создаст новое изображение filename-fs8.png, которое обычно намного меньше по размеру.

0 голосов
/ 27 октября 2011

Я обнаружил, что лучше всего использовать

- density [value] 

параметр.

...