О сжатии картинок, часть II (GIF)

toonel

Здесь пойдёт речь о другом формате картинок - GIF.

 

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

 

Пример работы toonel с GIF, реклама от Microsoft Live Meeting:

 

Original, 12920 байт, палитра 8 бит (256 цветов):

Original, 12920 байт, палитра 8 бит (256 цветов)

Original, 12920 байт, палитра 8 бит (256 цветов)

 

 

Good, 7748 байт, палитра 6 бит (64 цвета), экономия 40%:

Good, 7748 байт, палитра 6 бит (64 цвета)

Good, 7748 байт, палитра 6 бит (64 цвета)

 

Medium, 6154 байт, палитра 4 бита (16 цветов), экономия 53%:

Medium, 6154 байт, палитра 4 бита (16 цветов)

Medium, 6154 байт, палитра 4 бита (16 цветов)

 

Low, 4120 байт, палитра 2 бита (4 цвета), экономия 69%:

Low, 4120 байт, палитра 2 бита (4 цвета)

Low, 4120 байт, палитра 2 бита (4 цвета)

 

Итак, как видно, оригинальная картинка была сохранена с избыточной информацией (256 цветов), поэтому при уменьшении цветов вплоть до 16 включительно, качество картинки не ухудшилось.

 

О чём полезно знать:

1)toonel может не обработать картинку, а вернуть её оригинальной. Это происходит в следующих случаях:
- картинка больше 500К
- toonel может решить, что дальнейшее ухудшение качества приведёт к слишком большим визуальным изменениям и передаст картинку не измененной
около 5% GIF в силу тех или иных причин toonel не может обработать и передаёт оригинальными. Обычно, это происходит из-за не строгого соответствия картинки формату GIF.
2)при выставленном GIF quality отличном от Original, анимированные картинки становятся статичными - передаётся только первый кадр.

 

О чём также полезно знать - существуют компрессоры, которые заявляют, что сжимают GIF. При ближайшем рассмотрении оказывается, что эти компрессоры преобразуют GIF в JPEG и потом применяют стандартную функцию JPEG ухудшения качества. Обычно, это приводит к следующему результату:

 

75% сжатия, 13867 байт, палитра 8 бит (256 цветов), экономия отрицательная - результирующий файл больше оригинального:

75% сжатия, 13867 байт, палитра 8 бит (256 цветов)

75% сжатия, 13867 байт, палитра 8 бит (256 цветов)

 

50% сжатия, 13704 байт, палитра 8 бит (256 цветов), экономия отрицательная - результирующий файл больше оригинального:

50% сжатия, 13704 байт, палитра 8 бит (256 цветов)

50% сжатия, 13704 байт, палитра 8 бит (256 цветов)

 

25% сжатия, 13224 байт, палитра 7 бит (128 цветов), экономия отрицательная - результирующий файл больше оригинального:

25% сжатия, 13224 байт, палитра 7 бит (128 цветов)

25% сжатия, 13224 байт, палитра 7 бит (128 цветов)

 

максимальное сжатие, 10744 байт, палитра 7 бит (128 цветов), экономия 17%:

максимальное сжатие, 10744 байт, палитра 7 бит (128 цветов)

максимальное сжатие, 10744 байт, палитра 7 бит (128 цветов)