О сжатии картинок, часть I

toonel

Строго говоря, картинки в интернете уже сжаты, поэтому дальнейшее сжатие их невозможно. Однако, можно ухудшить качество картинки и за счёт этого сильно уменьшить трафик.

 

Следует понимать, что картинки бывают разные.

Во-первых, бывают разные форматы картинок, напр. JPEG, GIF, PNG, TIFF и прочее. Первые три наиболее часто используются в интернете.

Во-вторых, разные форматы придуманы не просто так. К примеру, JPEG наиболее подходит для фотографических изображений у которых нет резкого перехода цветов. GIF же придуман для рисованных изображений, у которых резкие переходы цветов, такие как мультики, заставки к компьютерным играм, элементы оформления страничек (линии, уголки, смайлики, часто avatar и т.д.).

Соответственно, ухудшение качества должно происходить по-разному для разных типов картинок. Для JPEG это стандартная функция, она заложена в сам формат JPEG. Для GIF такой стандартной функции нет и задача достаточно нетривиальна. Существуют разные алгоритмы ухудшения качества GIF. Все они основаны на уменьшении количества цветов. Какие-то алгоритмы более грамотно подбирают конечное количество и качество цветов, какие-то менее грамотно.

Именно из-за этой разницы в обработке картинок в toonel существуют отдельные настройки для JPEG и GIF. В случае с JPEG всё достаточно прозрачно - выставляются проценты от оригинального качества, в случае с GIF немного сложнее - toonel ухудшает картинку, основываясь на таких не строгих понятиях как ХОРОШО, СРЕДНЕ, ПЛОХО. Фактически, это значит, что toonel будет уменьшать количество цветов, отталкиваясь от оригинальной картинки, а не просто на фиксированное количество цветов.

 

На эти особенности стоит обращать внимание при выборе компрессора, т.к. встречаются заявления "мы сжимаем картинки", скромно умалчивая, что это сжатие касается только JPEG.

 

Пример сжатия JPEG, используя toonel *:

 

100%,размер 13,414 байт

100%

100%

 

90 %, размер 5,664 байт

90%

90%

 

70 %, размер 3,611 байт

70%

70%

 

50 %, размер 2,840 байт

50%

50%

 

30 %, размер 2,235 байт

30%

30%

 

10 %, размер 1,455 байт

10%

10%

 

 

Замечание

* Разные картинки по-разному поддаются сжатию, но подавляющее большинство JPEG уменьшается в два раза при изменении качества со 100% до 90%.