Изменение размера изображения и качества PNG

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

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

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

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

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

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

Ответ 1

  • Вы можете дополнительно снизить качество PNG с помощью постеризации:

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

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

  • Преобразование изображения в PNG8 с помощью pngquant.

    Он уменьшает количество изображений до 256 цветов, поэтому качество зависит от типа изображения, но pngquant делает очень хорошие палитры, поэтому вы можете быть удивлены, как часто это работает.

  • Используйте Zopfli-png или AdvPNG лучше сжать изображения.

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

Ответ 2

На странице справки говорится, что параметр -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

Ответ 3

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

- density [value] 

параметр.