Начинающим перед прочтением статьи будет полезно ознакомиться с небольшим глоссарием терминов и принципами работы алгоритмов компрессии изображений, чтобы уяснить базовую терминологию нижеследующего текста.
Начнем, конечно же, с bmp (Windows Device Independent Bitmap). В качестве прозаического отступления замечу, что, по моему скромному мнению, формат графического файла достоин права на жизнь лишь в двух случаях: он должен или хорошо уменьшать объем изображения в байтах или обеспечивать поддержку каких-либо полезных дополнительных функций. Так вот, bmp, также известный под именем dib, не обеспечивает ни того, ни другого. Хранит данные о цвете только в модели rgb, поддерживает как индексированные цвета, так и true color, причем в режиме индексированных цветов возможна простейшая компрессия RLE. Вся “мультиплатформенность” формата заключается лишь в поддержке Windows и OS/2. Так почему же он столь популярен?
Причина, наверное, в его примитивности и лени программистов, использующих графику в этом формате для представления внутри своих программ. Ведь bmp записывает мозаичные элементы картинки — пикселы — просто подряд друг за другом, как цифры, характеризующие цвет этих участков изображения. Чтобы восстановить графический образ на экране из формата bmp не надо проводить никаких сложных и ресурсоемких операций по декодированию — достаточно лишь последовательно считывать номера цветов пикселей в палитре rgb и отображать их поток на экране. Такой простой алгоритм не может не сказаться на степени загрузке процессора при обработке файлов bmp . Вот и используют их для хранения логотипов, splash-screen'ов, иконок и прочих графических бирюлек внутри программ. Ну и, естественно, не обошлось без поддержки bmp всеми любимой корпорацией Microsoft. Bmp — официальный графический формат платформы Windows.
Свою пальму первенства по примитивизму когда-то взрастил и формат pcx: он почти так же прост внутри, как и bmp. Pcx настолько древний, что некоторые всерьез задумываются о его использовании питекантропами в наскальной пиксельной мозаике. На самом деле, он был разработан фирмой Z-Soft специально для своего графического редактора PC PaintBrush под операционную систему MS-DOS. Возможности у этого формата такие же, как и у bmp, только поддержка OS/2 отсутствует. Зато pcx можно посмотреть большинством программ под DOS, в том числе внутренним просмотрщиком Norton Commander.
Также пользуется уважением среди программ DOS формат targa (Truevision Targa Image File). Он поддерживает глубину цвета от 8 до 32 бит на пиксель и использует алгоритм компрессии без потерь RLE . Файлы формата targa часто применялись DOS версией 3DStudio Max для хранения текстур. Больше ничем примечательным targa не выделяется.
Pict (Macintosh QuickDraw Picture Format) — это внутренний формат операционной системы Mac, аналог bmp. Но какой аналог! Он способен нести в себе растровую и векторную информацию, текст и даже звук! Такая потрясающая гибкость формата лишний раз подтверждает эффективность использования Mac при работе с мультимедиа. Изображение может храниться как в RGB, так и в CMYK, причем глубина цвета варьируется от индексированных цветов до true color; реализован алгоритм компрессии без потерь RLE. Формат pict открывается всеми приложениями, разработанными для Mac (QuickTime, Photoshop, etc.)
Замечательный контраст с предыдущим форматом составляет формат raw. Он не поддерживает ничего. Не хранятся даже данные о количестве каналов, глубине цвета и разрешении, так что во время открытия вам придется вводить эти параметры вручную, по памяти. Изображение хранится просто как поток пикселей с фиксированным заголовком, куда можно впоследствии поместить любую текстовую информацию. Кстати, размер этого заголовка в байтах вам тоже придется указывать при открытии картинки в этом формате. Архаизм? Нет! Просто претензия на полную мультиплатформенность и совместимость со всеми программами. Претензия, к слову сказать, неудачная: далеко не каждый графический редактор или просмотрщик поддерживает raw. А все она — простота, доведенная в погоне за совместимостью до полного маразма.
Еще один формат, не ставший популярным ввиду слабой маркетинговой поддержки — это FlashPix. Он был разработан фирмой Kodak, известной по формату PhotoCD своими попытками загнать в один файл несколько копий одного и того же изображения с разными разрешениями. FlashPix не стал исключением из фирменного правила и тоже поддерживает несколько копий с разным разрешением в одном файле. Веб-дизайнер, никогда не сталкивавшийся с файлами полиграфического качества, возможно спросит о смысле такого расточительного расходования дискового пространства. Он есть. Дело в том, что в полиграфии нередко работают с изображениями, занимающими десятки и даже сотни мегабайт. Их приведение к нужному размеру занимает гораздо больше времени, чем просто считывание копии с нужным разрешением, а размер файлов в предпечатной подготовке роли не играет. FlashPix также обладает встроенной системой защиты изображений с помощью водяных знаков. Формат достаточно редкий, и лишь немногие программы умеют с ним работать.
Формат psd (Adobe Photoshop Document) является внутренним для Photoshop, а, следовательно, позволяет хранить все “примочки” к изображению: контуры, каналы, слои, векторные надписи. Поддерживаются все цветовые модели и любая глубина цвета от бело-черного до true color, сжатие без потерь. Начиная с версии 3.0 Adobe добавила поддержку слоев и контуров, поэтому формат версии 2.5 и ранее выделяется в отдельный подформат. Для совместимости с ним в более поздних версиях Photoshop имеется возможность включить режим добавления в файл одного базового слоя, в котором слиты все слои. Такие файлы свободно читаются большинством популярных просмотрщиков, импортируются в другие графические редакторы и программы для 3D моделирования.
В 1987 году специалисты из фирмы CompuServe поднатужились и явили миру новый формат для хранения изображений в режиме индексированных цветов — gif (Graphics Interchange Format). Как следует из названия, формат был изначально ориентирован на обмен картинками через узкие каналы связи глобальной сети. В 1989 году формат был модифицирован, и его новая версия получила название gif89a. Gif ориентирован в первую очередь на хранение изображений в режиме индексированных цветов (не более 256), также поддерживает компрессию без потерь LZW. Но главная соковыжималка для картинок в формате gif — это, все таки, приведение их к меньшему числу цветов. Само собой, что такое пройдет без последствий лишь на картинках с изначально небольшим количеством цветов: рисованной графике, элементах оформления, маленьких надписях (кстати, для хорошего сглаживания надписи классическим шрифтом на однородном фоне достаточно от 7 до 11 цветов в зависимости от кегля).
Полезно знать, что gif ввиду ряда особенностей алгоритма компрессии лучше сжимает изображения с последовательностями одинаковых цветов по горизонтали, то есть картинка с горизонтальными полосками при прочих равных условиях будет занимать меньше места, чем картинка того же размера, заполненная вертикальными полосками. Дополнительные “примочки”, навешанные на gif в 1989 году это режим interlaced (чересстрочная загрузка изображений), дополнительный альфа-канал для реализации эффекта прозрачности (создатели формата, похоже, искренне верили, что никому никогда не понадобится больше одной градации прозрачности) и возможность хранить в одном файле несколько картинок с указанием времени показа каждой (по-русски это называется одним словом “мультфильм”). Теперь gif является самым распространенным форматом графики в Интернет и одновременно тяжким ярмом висит на шее у всех веб-дизайнеров, уставших от его откровенной убогости, но не использующих более прогрессивные форматы из-за боязни потерять посетителей.
На сегодня самый прогрессивный формат графики для Сети — это png (Portable Network Graphics, читается “пинг”). Этот луч света в темной мешанине закоснелых технологий и стандартов WWW был, по сути, выпадом независимых групп и консорциумов в сторону безмерно обнаглевшей компании Ulead, которая в 1995 году “прихватизировала” народный алгоритм сжатия без потерь LZW . Вместо последнего в формате png используется алгоритм Deflate, дающий, кстати, несколько лучшие результаты, чем LZW . Изначально призванный заменить морально устаревший gif на искусственных ландшафтах Сети, png предлагает целый ряд новых возможностей, недостаток которых в gif не раз делал его объектом бессильных ругательств.
Начать следует с того, что существует два подформата: png8 и png24, цифры означают максимальную глубину цвета, возможную в подформате. В png24 наконец-то была реализована поддержка 256 градаций прозрачности за счет дополнительного альфа-канала с 256 градациями серого. С помощью этой функции, например, полупрозрачный логотип может выглядеть одинаково на абсолютно любом фоне. К тому же png нашпигован такими полезными возможностями, как двумерный interlacing (т.е. изображение проявляется постепенно не только по строкам, но и по столбцам) и встроенная гамма-коррекция, позволяющая сохранять изображения, яркость которых одинакова как на PC, так и на компьютерах Mac, Sun и Silicon Graphics. Загорелись? Я тоже. Давайте остывать вместе. Ни одна из полезных функций не поддерживается ни одним из существующих браузеров. Почему? Точно не знаю, а мои гипотезы слишком нелестны для всей софтовой индустрии.
Если два предыдущих формата все-таки ориентированы на хранение рисованной графики и элементов интерфейса, то есть являются аналогами gif, то формат jpg also known as jpeg (Joint Photographic Experts Group) предназначен лишь для хранения полноцветных фотореалистичных изображений. К 1991 году мировая интернет-общественность осознала, что негоже пытаться подменить все буйство красок окружающего мира жалкими индексированными цветами gif. Собрались ученые мужи — специалисты по цифровой графике — и стали решать, как сделать полноцветные фотографии пригодными для передачи по Интернет. Проблему изучили капитально. В результате получился достаточно сложный по сравнению с другими алгоритм компрессии jpg и одноименный формат вместе с ним. Основанный на особенностях человеческого зрения (используется представление блока пикселей 8х8 одним цветом с сохранением информации о яркости плюс метод Хаффмана и многое другое в зависимости от степени компрессии), jpg отлично сжимает фотографии, но это сжатие происходит с потерями качества. Впрочем, чаще всего это ухудшение совершенно незаметно, кроме случаев когда вокруг контуров с резкими переходами цвета образуются своеобразные помехи.
Существует три подформата jpg: обычный, optimized (файлы несколько меньше, но не поддерживаются старыми программами) и Progressive (чересстрочное отображение, аналог interlaced в gif). Некоторые приложения позволяют хранить изображение в jpg в режиме CMYK и даже включать в файл обтравочные контуры. Однако, использовать jpg для полиграфических нужд категорически не рекомендуется из-за взаимодействия регулярной структуры блоков 8х8 пикселей, получающихся в результате компрессии, с не менее регулярной структурой типографского растра, что в итоге приводит к образованию муара. Из долговременного пользования этим безусловно полезным форматом можно извлечь две вещи. Во-первых, не стоит сохранять в нем все что попало, а только крупные фотографии с большим количеством плавных цветовых переходов. А, во-вторых, ни в коем случае не стоит сохранять одно и то же изображение в jpg больше одного раза: слишком заметными оказываются деструктивные изменения картинки от повторного использования компрессии.
Несмотря на кажущийся хаос в мире графических форматов, есть все-таки один, на который вы можете положиться во всех ситуациях (разве что кроме публикации в Интернет). Этот формат носит красивое имя tiff (Tagged Image File Format), и для его создания в свое время объединились такие гиганты, как Aldus, Microsoft и Next. Несмотря на то, что tiff — один из самых древних форматов в мире микрокомпьютеров, на сегодняшний день он является самым гибким, универсальным и активно развивающимся. В нем можно хранить графику в любом режиме: от битового и индексированных цветов до Lab, CMYK и RGB (кроме дуплексов и многоканальных документов).
Поддерживаются обтравочные контуры, альфа-каналы и стандартная информация об авторе, категории изображения и ключевых словах. Формат без проблем переносится между платформами и легко импортируется во все программы верстки, что делает его незаменимым при подготовке макетов для печати. В стандартной версии используется компрессия без потерь LZW, но в версии Photoshop 6.0 появилась возможность самому выбирать необходимый метод сжатия - LZW, Deflate, JPEG, а также сохранять несколько копий изображения с разным разрешением ("image pyramid") и даже включать в файл слои. К сожалению, эти полезные функции ничем кроме Photoshop не поддерживаются. Кстати, Adobe — не единственная фирма, решившая в своих целях воспользоваться открытостью формата tiff. Поэтому если требуется обеспечить максимальную совместимость, следует погасить все дополнительные опции.
Благодаря своей надежности, совместимости со многими программами и платформами и куче настраиваемых параметров, формат eps (Encapsulated PostScript) является выбором большинства профессионалов в области полиграфии. Он предназначен сугубо для переноса готовых изображений в программы верстки, поддерживает цветовые модели CMYK, RGB, дуплексы и содержит готовые команды устройству вывода. В eps можно сохранить информацию о треппинге, типографском растре, внедренных шрифтах и обтравочных контурах. Данные хранятся тремя способами: ASCII (медленный, но наиболее совместимый), Binary (быстрый и компактный), JPEG (быстрый, но с потерями качества и плохой совместимостью). При сохранении в eps можно указать формат и глубину цвета эскиза, который для ускорения работы будет выводиться на экран в программах верстки вместо большого оригинала.
Формат scitex используется исключительно на этапе растрирования смеси из векторных и растровых данных в одну битовую карту, предназначенную для high-end фотонаборных автоматов фирмы Scitex — она то и сохраняется в этом формате. Можно не доверять растрирование файла сервисному бюро, а самому сохранить макет в формате Scitex. Он не поддерживает никаких алгоритмов сжатия.
Для рядового пользователя Pixar — всего лишь музейная редкость. Это и понятно: он применяется исключительно на high-end графических станциях Pixar, предназначенных для профессиональной трехмерной анимации. Его возможности невелики: отсутствие компрессии, поддержка лишь модели RGB и градаций серого (а что еще надо для результатов рендеринга трехмерных композиций?) и одного альфа-канала. Пожалуй, самая известная трехмерная анимация, созданная с помощью компьютеров Pixar — это герои фильма “Солдатики”.
Формат iff (Amiga Interchange File Format) используется только для обмена графическими данными с компьютерами Commodore Amiga. Как и формат Macintosh — pict — он является очень гибким и позволяет хранить не только графику, но и текст.
Последняя версия Photoshop 7 в модуле Save for Web умеет сохранять картинки в формате Wireless Bitmap (WBMP), специально оптимизированном для сотовых телефонов, смартфонов, карманных компьютеров и прочих мобильных устройств. Описание этого формата вместе с языком разметки WML (Wireless Markup Language) включено в спецификацию WAP (Wireless Application Protocol). Кроме Photoshop создавать изображения WBMP способна также Macromedia Fireworks 4 и выше.
Формат поддерживает только два цвета, но можно имитировать больше с помощью разброса пикселей (dithering). Теоретически файлы WBMP могут содержать анимацию. Сжатие не поддерживается, что очень удивительно, так как на практике графический файл для WAP не может быть больше 1461 байт (это ограничение связано с небольшим объемом памяти сотовых телефонов). Из-за скромного разрешения дисплеев мобильных устройств безопасный размер файлов ограничено 90х24 пикселями. Помимо вышеперечисленных недостатков WBMP еще довольно сыроват: лишь немногие устройства способны отображать графику в этом формате.