Ководство.

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

11 сентября 1998.

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

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

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

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

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

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

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

Ководство

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

Ководство

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

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

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

Ководство

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

Ководство

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

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

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