Программы для сжатия изображений
imagemagick https://imagemagick.org/ — в этот пакет входят консольные утилиты convert для сжатия изображений и identify для получения информации об изображении.
optipng http://optipng.sourceforge.net/ программа для подбора лучшего метода компрессии PNG изображения без потери качества. Она может перебирать все возможные алгоритмы сжатия и находить среди них те, что приведут к минимальному размеру конкретного изображения.
Установка:
sudo apt-get install imagemagick optipng
PNG иконки и картинки
PNG изображения с небольшим количеством цветов зачастую сжимаются довольно хорошо без потери качества, причем лучший результат в таком случае дает уменьшение цветов без преобразования в JPG плюс удаление информации из заголовков об изображении.
- Размер: 20 897 байт
- Габариты: 293 × 367 пискелей
- Количество цветов: 131
- Размер: 474 байта
- Габариты: 293 × 367 пискелей
- Количество цветов: 6
Информация по цветам получена так: identify -verbose doc-original.png | grep -i "colors\|filesize\|geometry" Geometry: 293x367+0+0 Colorspace: sRGB Colors: 131 Page geometry: 293x367+0+0 Filesize: 20897B
Само сжатие состоит из двух этапов — уменьшение цветов с удалением заголовков командой
convert doc-original.png -strip -interlace none +dither -colors 6 doc-compressed.png
-strip удаляет комментарии, Exif, IPTC, ICC, XMP
-interlace none последовательный рендеринг изображения (картинка будет загружаться сверху-вниз, а не постепенно увеличивая качество по мере загрузки) — такой формат занимает меньше места.
+dither отключение шума пикселей для смягчения последствия уменьшения количества цветов, (это создает иллюзию большего количества цветов и может хорошо сработать для фотографий), но для четких картинок и особенно изображений с прозрачными пикселями это приводит к артефактам.
-colors 6 указывает на количество используемых цветов
Основная задача правильно подобрать минимальное значение параметра -colors так, чтобы картинка выглядела почти как оригинал.
В данном примере идеально получилось с 6ю цветами и размер картинки получился всего 476 байт.
Следующий шаг — подбор лучшего метода компрессии без искажения качества программой
optipng -o7 doc-compressed.png
После выполнения которой изображение занимает 474 байта