;-)
.ру/
Ководство


Артемий Лебедев

§ 8. Простой секрет ГИФа

11 сентября 1998




ГИФ — это сокращение от Graphics Interchange Format (формат обмена изображениями). Его придумали в компании «Компьюсерв», когда представления о том, что такое картинка на экране, были далеки от сегодняшних, как «Пентиум II» от 286-го. Если бы создатели ГИФa знали, что будет твориться в 1998 году, они бы не придумали такой кривости. Впрочем, в середине восьмидесятых не считали, что кому-нибудь всерьез понадобится больше 256 цветов. И не знали о том, что кому-то захочется делать анимацию.




Лирическое
отступление

Вообще, вполне могли изобрести формат, который поддерживал бы 24 бита (но мог жить и при одном), хорошо сжимался (и имел несколько видов компрессии), позволял устанавливать уровень потери качества, умел проявляться постепенно, и при этом изображение занимало бы мало места. Впрочем, формат ПНГ почти приближен к идеалу, но, поскольку придуман он всего года три назад, его никто серьезно не поддерживает. А жаль.




Совершенно понятно, для чего нужен ГИФ. Для простой графики, не для фотографий. Весь текст, линии, однотонные поверхности должны сохраняться в этом формате.




Сослагательное
наклонение

Ветераны помнят, что довольно долго все эротические картинки существовали только в формате ГИФ. Собственно, именно благодаря желанию масс передавать подобные картинки формат и сделали. Отнять популярность у него смог только джипег, который лучше справлялся с задачей. Создатель же ПНГ не додумался в свое время перевести пару сотен баб в свой формат и заслать их в соответствующие конференции. Тогда бы всем пришлось обзавестись новинкой и популярность была бы обеспечена раз и навсегда. Было бы у нас три формата.




Чтобы понять, как работает ГИФ, рассмотрим простой пример. Возьмем картинку и сохраним ее в ГИФе:







Потом возьмем ее же и повернем на 90 градусов:







Графическая информация осталась та же. Ни один пиксель не пропал. На что же нужно обратить внимание? На размеры этих картинок. Первая занимает 1,5 килобайта, а вторая — 400 байтов. То есть почти в четыре раза меньше.



Пока те, кто впервые такое видит, собирают с пола выпавшие глаза, раскроем секрет: ГИФ сжимает (а компрессия происходит всегда) изображение горизонтально. Поэтому во втором примере было потрачено гораздо меньше места на запись информации. Рассмотрим под микроскопом то, с чем пришлось иметь дело компрессору.



Представьте, что формат ГИФ — живой человек. Ему нужно записать изображение словами так, чтобы потом воспроизвести увиденное в любое время и без ошибок. Он берет верхний ряд картинки — высотой в пиксель — и смотрит на него (показано в увеличении):








Сколько слов нужно потратить на описание? «Восемь пикселей черного цвета, тринадцать белого, восемь черного...» и так далее. Целую тетрадку за три копейки займет. А что мы видим во втором случае?








«Линия черного цвета длиной в девяносто два пикселя», — и все.



Зная, как себя ведет ГИФ, можно контролировать процесс создания изображений. Стараться делать побольше линий одного цвета. Поменьше вертикальных картинок.



Но самое главное — не поддаваться на простоту и очевидность этого примера. В жизни всё всегда сложнее. Сегодняшний трюк — лишь часть того, что надо знать, чтобы у заказчиков лица были добрыми, а улыбки — широкими.