Секреты web-графики

Источник: hostmake
Дмиттрий Буренин

Как известно, 70% информации об окружающем мире человек получает через зрение. Естественно, что с появлением графических
браузеров, обретя возможность добавлять к тексту изображение, Интернет получил мощнейший инструмент воздействия на своих пользователей. Являясь по своей сути той же компьютерной графикой, изображения в Web все-таки имеют ряд особенностей, на которые (и не только на них) стоит обратить внимание.

Известно, что для получения любого цвета достаточно смешать в соответствующих пропорциях всего три: красный (Red), зеленый (Green) и синий (Blue) — в английской аббревиатуре RGB. Этот принцип широко применяется в цветных фотопленках, где, изменяя степень засветки красного, зеленого и синего слоев, получают тот или иной цвет. Из цветного кино принцип RGB перешел в цветное телевидение, где цвета получаются при совмещении красного, зеленого и синего лучей разной интенсивности. Естественно, что с экранов телевизоров он перекочевал на экраны компьютерных мониторов. Так как конечный цвет является результатом суммирования, то и называется он аддитивным (additive color).

Однако при подготовке изображений на компьютере используется и противоположный способ смешивания — вычитания (subtractive color). При этом происходит удаление из белого, соответственно, негативов вышеназванных цветов — голубого (Cyan), пурпурного (Magenta), желтого (Yellow) и, для получения лучшего контраста, негатива белого — черного (blaK). В английской аббревиатуре — CMYK. Данный способ используется, прежде всего, для подготовки изображения к печати на бумаге и в Web практически не применяется. Нас же он интересует постольку, поскольку он вообще существует.

При создании изображения на компьютере не столько важно знать, как получается тот или иной цвет, сколько — как им управлять. При всем многообразии форматов графических файлов, а соответственно, и цветовых режимов, для подготовки графики в Web используются от силы три-четыре. Но прежде чем рассматривать эти режимы, необходимо определиться с терминологией.

Палитра цветов — сразу возникают ассоциации с мастерской художника, с мольбертами и дощечками для смешивания цветов. В некотором роде так оно и есть, только и кисти, и мольберт, и краски, и саму мастерскую заменяет компьютер. В компьютерной графике палитра (таблица) — перечень цветов, используемых в данном режиме при работе с изображением. Количество их в палитре зависит от глубины.

Глубина цвета определяется количеством используемых битов на пиксель (единичный элемент, можно сказать, "атом" изображения). В принципе, глубина цвета, а соответственно, и количество цветов в палитре, может быть сколь угодно большим. Но не стоит забывать, что "все хорошо в меру!". Человеческий глаз хоть и уникальный инструмент для работы с цветовой гаммой, но имеет конечную разрешающую способность (возможность различать) по цветам. Кроме того, необходимо учитывать и скорость обсчета большого объема изображения (я не говорю о больших размерах файлов — об этом немного позже) компьютером, и возможности монитора при большой глубине цвета. Отсюда приходим к максимуму — 24 бита на пиксель (8 бит на каждый цвет в RGB) или 224=16,8 млн. цветов в палитре. Однако не всегда целесообразно использовать "полную" палитру (true color) при подготовке изображения для Web.

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

Как уже отмечалось, не всегда целесообразно, использовать большое количество цветов в изображении. В режиме индексированных цветов (index color) цвета формируются не традиционным смешиванием трех "чистых" — каждому пикселю изображения присваивается индекс (отсюда и название) цвета в палитре. Причем количество их может быть разным, но не более 256. Естественно, чем меньше цветов в палитре, тем меньше и объем файла изображения.

Однако для полноцветных изображений с плавными градиентными переходами необходим режим RGB, дающий доступ к управлению всеми цветами путем задания одного из 256 оттенков каждого из трех цветов. Это наиболее часто используемый режим работы подготовки изображений.

При всем разнообразии изображения в компьютерной графике можно поделить на два больших класса: растровые и векторные. Каждый из них имеет свои преимущества и недостатки.

Принцип построения растровых изображений основан на конечности разрешающей способности глаза, когда при сближении двух точек, глаз перестает их различать. Вспомните рисунки, создаваемые на заре компьютерных технологий с помощью ASCII-символов, которые можно было рассмотреть только с некоторого расстояния. Растровое изображение можно представить как массив пикселей, каждый из которых имеет свой цвет. Соответственно, растр — представление изображения (компьютер передает так любую информацию), выражаясь языком математики, методом дифференцирования (деления непрерывности на элементарные отрезки). Именно из принципа представления растрового изображения и проистекают его недостатки. Так, для изображения 300?200 пикселей при трех байтах на пиксель для RGB размер файла будет 300?200?3=180 Кбайт. Согласитесь, не каждый захочет ждать загрузки такого изображения, тем более если оно не одно. Кроме того, любая элементарная единица, будь то атом в понимании древних греков или пиксель в нашем понимании, в принципе, неделима. Отсюда невозможность масштабирования растрового изображения. Попробовав увеличить такую картинку раз этак в 10, единственное, что можно будет увидеть, — нагромождение цветных квадратиков в стиле раннего авангарда, понять смысл которого можно будет только шагов с пяти (вспомните пример с ASCII-символами) и то, если позволит экран монитора. 

Достоинства растра — это прямое продолжение его недостатков. Только в нем можно получить полный доступ к каждому пикселю изображения, изменить его яркость, тон или насыщенность, поменять белое на черное. Именно на этом основаны многочисленные графические фильтры, позволяющие сделать изображение размытым или, наоборот, более резким, более или менее контрастным, тонировать. Растровые форматы используются при сканировании и захвате изображения с экрана. Растровые графические редакторы гораздо чаще используются для редактирования изображений, чем для их создания, поэтому довольно мирно уживаются Corel Draw и PhotoShop. Еще как немаловажную особенность надо отметить, что практически все графические броузеры понимают растровые изображения без подключаемых модулей (plug-in). Кроме того, практически любой векторный рисунок быстро и без искажений можно перевести в растр. Обратной же силы этот закон не имеет.

Как интеграл в математике является обратной функцией дифференцированию, так и "вектор", можно сказать, является противоположностью растру. Любую кривую, в том числе и замкнутую, можно описать некоторым набором математических формул и представить в виде программного кода. Любое изображение можно представить как совокупность фигур (замкнутых линий), окрашенных в тот или иной цвет. Именно так мы создаем изображения с помощью карандашей и кисточек, именно на этом принципе построены векторные форматы. Эти принципы и определяют основные достоинства "вектора". Отсутствие необходимости описывать каждый пиксель позволяет значительно уменьшить объем файлов даже при довольно больших размерах изображения. Кроме того, из математики известно, что при умножении функции на постоянное число (константу) форма описываемой ею кривой не изменяется. Отсюда мы получаем векторное изображение как идеальный объект для масштабирования. Изображение, увеличенное в десять раз, будет выглядеть не хуже оригинала. 

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

Одной из разновидностей векторной является трехмерная (3D) графика. В этих файлах просто вводится еще одна координата, но при этом получается не изображение, а целая сцена с большим количеством нюансов, и, соответственно, большим объемом вычислений.

Но при всем многообразии графических форматов для представления изображений в Web используeтся малое их количество. Основным ограничителем здесь выступает размер файла. А потому выбор формата при подготовке изображения для Web определяется оптимальным соотношением двух взаимоисключающих параметров: размеров изображения и объема файла. Однако из теории вероятности известно, что большинство схем представления информации обладают той или иной степенью избыточности. К примеру, составляя конспект на лекциях, мы пользуемся некой системой сокращений слов и фраз, не теряя при этом смысла содержания. Этот принцип положен в основу большинства систем сжатия информации, в том числе и форматов графических файлов, используемых в Web. Однако при одинаковом принципе алгоритмы его реализации разрабатываются разными людьми, а потому имеют весьма существенные различия между собой. Более того, не стоит забывать, что каждый формат имеет и другие особенности, поэтому при его выборе следует учитывать прежде всего исполнение рисунка.

GIF (Graphics Interchange Format, формат взаимообмена графикой) разработан CompuServe Incorporated, последняя версия GIF-89a. Первоначально, как можно понять из названия, этот формат разрабатывался для передачи графической информации в потоке данных, а потому, в отличие от остальных, представляет собой последовательную организацию, а не произвольную, что позволяет использовать минимум ресурсов процессора при его распаковке. Для компрессии файлов GIF использует LZW-алгоритм сжатия, или, как его еще называют, сжатие без потерь, при этом он наиболее эффективен при больших однотонных областях с четкими границами. А так как сканирование изображения происходит по горизонтали, то и сжатие будет более эффективно при больших горизонталях таких областей. Однако GIF не способен хранить неиндексированные изображения, то есть может отображать не более 256 цветов. Эта ограниченность формата не позволяет добиться плавного перехода от одного цвета к другому, что особенно заметно при использовании градиентов и размывок. Можно, конечно, использовать прием "диффузия", но эффект "зернистости", получаемый при этом, выглядит, скорее, как стилизация, а потому не всегда оправдан в общем контексте сайта. Кроме того, при использовании диффузии увеличивается неоднородность изображения, что ведет к снижению эффективности компрессии. Обратной стороной ограниченности палитры в GIF может служить ее гибкость. Изменяя размер таблицы, а, следовательно, и количество цветов в ней, web-дизайнер получает в свои руки прекрасный инструмент для регулировки соотношения качество изображения / размер файла. Так, уменьшая в изображении размером 100?100 пикселей количество цветов с 256 (8 бит на пиксель) до 128 (7 бит на пиксель), получаем 100?100?8 — 100?100?7 = 10 000 бит экономии. Еще одной особенностью, введенной в последнюю версию формата, является создание прозрачных областей в изображениях, открывающее интересные возможности в web-дизайне. "Потоковая" природа GIF, относительно малые размеры его файлов, возможность компрессии за счет использования прозрачных областей в кадрах сделали его прекрасным инструментом для создания анимации в Web. Использование GIF целесообразно, прежде всего, для так называемых плоскоцветных изображений с четко обозначенными границами переходов между цветами, а также малоразмерных изображений типа кнопок, превьюшных картинок и т. п.

JPEG (Joint Photographic Experts Group). Разработан группой экспертов по фотографии (что видно из названия) под эгидой ISO (Международная организация по стандартам). Вообще этот формат довольно уникален тем, что использует алгоритм сжатия, отличающийся от применяемых во всех остальных графических форматах, — сжатие с потерями. Этот алгоритм ранее использовался на телевидении в схеме телевизионной трансляции США (NTSC). Основан он на все той же ограниченности человеческого зрения, неспособности глаза не замечать некоторые искажения в восстановленном изображении. На сегодня этот алгоритм является одним из самых эффективных (коэффициент сжатия достигает 1:100), однако он не очень хорошо обрабатывает изображения с малым количеством цветов и резкими границами. Вообще JPEG можно назвать противоположностью GIF. Он позволяет отображать 24-битную палитру, т. е. все 16,8 млн. цветов, что дает возможность отображать градиенты с фотографической точностью, но при этом не может иметь прозрачных областей. Однако этот формат таит в себе одну особенность, которую нельзя не учитывать. При повторном сохранении изображения в JPEG он повторно запускает алгоритм сжатия, естественно, с ухудшением качества. Поэтому сохранять изображение в нем следует только после окончательной обработки.

Оба растровых формата, и GIF, и JPEG, поддерживаются всеми графическими броузерами "по умолчанию" и могут быть обработаны в большинстве графических редакторов. Выбор между форматами определяется прежде всего особенностями конкретной картинки, и сделать его иногда бывает возможно только путем эксперимента.

Однако и векторные форматы все чаще обращают на себя внимание web-дизайнеров. В последнее время весьма популярным стал формат Shockwave Flash, разработанный фирмой Macromedia. Обладая такими преимуществами векторных форматов, как масштабируемость и относительно небольшой объем файла, он все-таки не является чисто графическим. Инструментарий для рисования в программе Macromedia Flash Direct ближе к растровым редакторам, нежели к векторным, а способность создавать анимации, озвучивать их, заставлять реагировать на перемещение мыши и способность работать с гиперссылками делают Flash похожим на мультимедийный формат. В качестве отдельных элементов сайта Flash-заставки используются в основном как интерактивные баннеры в некоторых рекламных сетях. Такого вида баннерам пророчат большое будущее из-за их большей возможности влиять на пользователей Сети, нежели классических, выполненных в GIF. Однако гораздо чаще этот формат находит применение для создания целой страницы или большей ее части (классическим примером, на мой взгляд, является "Диснеевский" сайт {http://www.disney.com/}).

Камнем преткновения для Flash является наличие дополнительного модуля для его просмотра, который хоть и распространяется бесплатно, но при весе 0,24 М и необходимости загрузки через Сеть может отбить желание просматривать Flash-заставки. Но появление встроенного модуля уже в 4.5 версии "Коммуникатора" и обещания Microsoft сделать аналогичное и в IE 5.0+ может вполне выдвинуть Flash в лидеры среди графических форматов для Internet и несколько изменить само представление о web-дизайне.

Не остались забытыми и трехмерные объекты. Для их создания в Интернете в ноябре 1994 года состоялась презентация VRML 1.0 (Virtual Reality Modeling Language — язык моделирования виртуальной реальности). Последняя версия VRML 2.0 позволяет создавать сложные виртуальные миры со звуковыми эффектами. Для написания файлов этого формата может быть достаточно простого текстового редактора (подобно HTML, они не требуют дальнейшей компиляции), но существуют также специальные программы, помогающие этот процесс визуализировать и автоматизировать. Кроме того, некоторые 3D-пакеты поддерживают формат VRML 2.0. Для просмотра виртуальных миров необходимы дополнительные модули, включенные в состав последних версий NC и IE. Но при всей своей привлекательности 3D-миры пока еще не нашли широкого применения. Основными недостатками являются невозможность встраивания таких миров в HTML-страницу и, соответственно, "переплетение" с общим дизайном сайта, в отличие, например, от Flash. Другой неприятной особенностью является довольно большое количество вычислительных ресурсов компьютера для качественного рендеринга (визуализации) трехмерной сцены.

Говоря о графике в Web, обычно не упоминают о шрифтах как графических объектах. Связано это прежде всего с тем, что до недавнего времени в HTML-страницах предполагалась весьма ограниченная возможность управления параметрами шрифтов. Но уже в спецификации CSS level2 вводится понятие встраивания шрифтов, открывающее возможность использовать не только стандартные. Существующие программы позволяют создавать даже символьные шрифты, получая вместо букв монохромные масштабируемые изображения. Но и эту идею не обошла "война броузеров". Разная реализация "подгружаемых" шрифтов в NC и IE, к сожалению, не позволяет использовать эти возможности в полной мере.

Конечно, приведенные здесь рассуждения не могут охватить весь океан под названием "web-графика". Но начиная строить дом, необходимо знать кое-что и о кирпичах. И я думаю, что мой первый кирпич не будет лишним при строительстве вашего сайта.


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=10460