Две его отличительные черты - это:
Рис. 1. белый фон |
Рис. 2. прозрачный фон |
Сравним результаты сохранения одного и того же изображения в разных форматах. Левая картинка (рис.1) - это файл x_cub.gif размером 2225 байт (файл на рис.2 имеет тот же размер). В формате png картинка будет точно такая же, но размер файла - 1662 байта. Сохраним теперь ту же картинку в jpg-файле с различным уровнем качества (q).
Рис. 3. jpeg, q=100, 21 742 байта. |
Рис. 4. jpeg, q=80, 10 718 байтов. |
Рис. 5. jpeg, q=60, 8 222 байта. |
Рис. 6. jpeg, q=40, 6 635 байтов. |
Видно, что jpg-файлы имеют либо слишком большой размер, либо недостаточное качество, при q=40 дефекты бросаются в глаза, хотя при q=80 труднозаметны.
Можно ли сохранять в формате gif фотографию? В принципе можно. Но её для этого придется перевести из полноцветной в палитровую.
Что это значит? В полноцветном изображении, например, в jpeg, цвет каждой точки задается тремя числами - яркостью красного (Red), зеленого (Green) и синего (Blue), все вместе, - три целых числа RGB. Каждое число занимает 1 байт и значит, лежит в пределах от 0 до 255. Все три байта вместе могут принимать 2563 ~= 16 млн. значений. В GIF-файле цвет очередной точки не произвольный, а из заранее заданной палитры, то есть из некоторого заранее заданного набора RGB-цветов. Цветов в палитре не может быть больше 256 (меньше - может).
Таким образом, прежде чем сохранять фотографию в виде gif-файла, надо уменьшить количество цветов. Причем сделать это так, чтобы фотография визуально не слишком изменилась. Для этого надо выбрать не более 256 различных RGB-цветов и каждый из цветов, присутствующих на фотографии надо "округлить" до одного из палитровых.
Посмотрим, каковы результаты сохранения фотографий в gif-файлах.
Рис. 7. jpeg, q=100, 118 502 байта. |
Рис. 8. jpeg, q=95, 67 340 байтов. |
Рис. 9. gif, 80 052 байта. |
Рис. 10. png, 71 875 байтов. |
Картинки на рисунках 9 и 10 идентичны, содержат по 256 различных цветов, это палитровые изображения. Для сравнения, те же картинки в jpeg-формате (рис. 7,8) содержат примерно по 50 тыс. различных цветов.
Вы не видите разницы? Она есть, только в глаза не бросается. Посмотрите повнимательнее, например, на фактуру асфальта в нижнем левом углу.
Формат не поддерживает полноцветные изображения (TrueColor), а лишь только палитровые: в начале файла задается некоторая таблица RGB-цветов (не более 256 штук) и цвет каждой точки задается в виде номера в этой таблице. Таким образом, каждая точка кодируется одним-единственным байтом. Таблица цветов может считаться стандартной (или серой) и в этом случае отсутствовать в файле. Несмотря на невозможность хранения полноцветных изображений, качество gif-файла весьма высокое и обычно такое изображение трудно на глаз отличить от полноцветного.
Последовательность байт, описывающих изображение сжимается стандартным LZW-алгоритмом.
Интересной особенностью формата является "прозрачный цвет": один из элементов таблицы цветов объявляется прозрачным. Очень удобный эффект для применения в html-файлах. Другая важная черта - возможность сохранения в одном файле сразу нескольких изображений (анимированный gif) и последовательный вывод на экран одного за другим с заданным интервалом. Эта возможность широко используют в интернете для получения простейшей анимации: при просмотре страницы на экране может все время что-то дергаться и крутиться. К счастью, большинство броузеров позволяют такую возможность отключить.
Но 24 декабря 1994 года неожиданно две конторы, Unisys и CompuServe, которым в результате каких-то махинаций достался патент, совместно провозглашают, что любой разработчик, создающий программу, читающую или пишущую GIF-файлы, должен производить отчисления Unisys за использование алгоритма LZW.
В результате многие продукты прекратили использовать или поддерживать данный формат, а вместо него был разработан формат PNG.
Срок действия патентов заканчивался в 2005 году (точнее говоря, в разных странах немного по-разному). За две недели до окончания срока патента правообладатели устроили аттракцион "невиданная щедрость". Учитывая свою миссию в борьбе против тирании, помня о борьбе с голодом и об стонущих под игом, правообладатели безвозмезно, то есть даром отдают свое сокровище во всенародное пользование.
И теперь мы можем пользоваться этим методом сжатия совершенно свободно.