Компьютерная графика в дизайне web-страниц. Текстура из фотографии

Графические компоненты web-страниц по назначению можно условно разделить на три категории: иллюстративная графика, включая дополняющие текст фотографии, пояснительные рисунки, чертежи и схемы, функциональная графика, представляющая собой элементы управления сайтом (кнопки навигации, счетчики и элементы интерактивных форм) и, декоративная графика - элементы дизайна страницы, включенные в нее "для красоты" и не несущие информационной нагрузки (фоновые рисунки, линии-разделители, выполненные в виде графических файлов заголовки и т.д.).

Сетевые графические форматы

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

Стандарт GIF (Graphic Interchange Format, формат обмена графическими данными) создан в 1987 году. Он позволяет значительно сокращать объем итогового графического файла по сравнению с исходным изображением за счет смешения сходных оттенков в один. Если, например, в составе рисунка имеется участок, состоящий из нескольких сходных полутонов, к примеру, голубого, светло-голубого и темно-голубого цвета, они будут кодированы одним оттенком - голубым. Информация об изображении в файле стандарта GIF записывается построчно, то есть представляет собой массив описаний строк высотой в один пиксел. Данный формат оперирует фиксированной, так называемой индексированной палитрой, число цветов в которой не превышает 256. Поэтому стандарт GIF используется в документах HTML только для отображения так называемой бизнес-графики: диаграмм, логотипов, кнопок, разделительных линий, других элементов оформления страницы (т.е. для рисованных изображений). Для размещения на web-сайте фотографий, репродукций картин и изображений с большим количеством цветов и цветовых переходов используется стандарт JPEG.

Одном из свойств стандарта GIF является его особенность, названная разработчиками "interlace", или, "черезстрочность". Она позволяет загружать картинку с сервера в клиентский браузер не целиком, а частями следующим образом: сначала на экране отображаются первая, пятая и десятая строки, составляющие изображение, затем - вторая, шестая и одиннадцатая и т.д. Таким образом, для пользователя создается иллюзия постепенной загрузки графического элемента: картинка как бы медленно "проявляется" на странице.

В 1989 году компания CompuServe выпустила новую версию этого графического формата, получившую название GIF89a. Данная модификация включает в себя еще две особенности. Первая называется "transparancy" и подразумевает создание для изображения прозрачного фона методом сохранения вместе с файлом так называемого альфа-канала, представляющего собой маску прозрачности рисунка. Цвета, помеченные в альфа-канале как прозрачные, станут невидимы в браузерах и большинстве других программ, предназначенных для просмотра изображений. Эта функция необходима, например, при размещении картинок неправильной геометрической формы на странице со сложным фоновым рисунком, когда корректно "подогнать" части изображений друг к другу не представляется возможным. Убрать ненужный фон из файла GIF можно встроенной процедурой графического редактора Adobe Photoshop.

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

JPEG (Joint Photographic Experts Group, объединенная группа экспертов в области фотографии) - графический стандарт, созданный на основе одноименного алгоритма сжатия, изображений с потерей качества, кодирующего не идентичные элементы, а межпиксельные интервалы.

Механизм сжатия изображения в файл формата JPEG. Первой ступенью компрессии является преобразование изображения в цветовой образ LAB, раскладывающий картинку на три независимых канала, один из которых (Lightness) выделен для сохранения значений интенсивности цветов, а два других (А и В) - для запоминания непосредственно цветовой информации. Причем данные о цветах сохраняются в виде шкалы, организованной но принципу непрерывного спектра. Вторя ступень - собственно компрессия; из получившейся цветовой модели удаляются приблизительно три четверти информации о цвете, затем образ дробится на участки размером 8х8 точек, и преобразуется в числовой массив данных. Заголовок каждого блока описывает доминирующий цвет участка, остальная информация - менее заметные оттенки. На третьей ступени сжатия из массива данных удаляется определенная часть информации, описывающей второстепенные оттенки, причем количество изымаемых данных зависит от выбранного пользователем качества результирующего изображения. И наконец, готовый файл сжимается согласно алгоритму Хаффмана, который предусматривает замену наиболее часто встречающихся в массиве данных знаков более компактной двухбитной кодировкой. Декомпрессия файла JPEG происходит в обратном порядке.

JPEG оптимален для передачи фотографических изображений, а также картинок с большим количеством полутонов и цветовых переходов. Максимальное число цветов, которое может содержать изображение в формате JPEG, достигает 16 миллионов.

Существует несколько разновидностей стандарта JPEG. Формат JPEG Baseline Optimized основан на более совершенном алгоритме компрессии изображений. Недостатком данной реализации JPEG является то, что она не распознается целым рядом часто используемых приложений. Progressive JPEG был оптимизирован специально для представления графики во Всемирной сети, изображения в этом формате сжимаются чуть лучше, чем в стандартном JPEG, но хуже, чем в JPEG Baseline Optimized. Отличительная особенность Progressive JPEG - возможность сохранять графику в чересстрочном режиме, как это реализовано в стандарте GIF.

PNG (Portable Network Graphics, портативная сетевая графика), пользователи придумали этой аббревиатуре иную расшифровку: Picture is Not GIF. PNG поддерживает interlacing (черезстрочность) не только по горизонтали, но и по вертикали. Палитра PNG позволяет создавать изображения с глубиной цвета до 48 бит, а также поддерживает альфа-канал, но состоит он не из одного уровня, а из 254 уровней для каждого элемента изображения, с диапазоном прозрачности от 0 до 99%. Благодаря этому дизайнер получил возможность создавать картинки с переменной прозрачностью, например, логотипы, фон которых плавно сливается с фоновым цветом html-документа, каким бы тот ни был. Изображения PNG содержат так называемый блок описания гамма-коррекции. Под переменной "гамма" в данном случае подразумевается некая величина, выражающая зависимость яркости свечения каждой точки экрана пользователя от напряжения на электродах кинескопа, которое берется из файлов управления видеоподсистемой компьютера. Таким образом, при открытии изображения, созданного с помощью IBM-совместимой машины, на компьютере другого производителя, например на Apple Macintosh, в яркость цветопередачи вводится соответствующая поправка, и картинка отображается совершенно идентично на разных типах оборудования. Этот формат поддерживают броузеры Microsoft Internet Explorer, начиная с версии 4.0, и Netscape Communicator версий 4.04 и выше.

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

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

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


Достоинства WebGL

С развитием HTML разработчики получили возможность создавать все более сложные веб-приложения. На заре своего развития язык HTML предлагал только возможность отображения статического контента, но с добавлением поддержки JavaScript стало возможным реализовывать более сложные взаимодействия элементов и отображения динамического контента. Внедрение стандарта HTML5 позволило использовать новые возможности, включая поддержку двухмерной графики в виде тега canvas. Создание технологии WebGL позволило отображать и манипулировать трехмерной графикой на веб-страницах с помощью JavaScript. При помощи WebGL разработчики могут создавать совершенно новые пользовательские интерфейсы, трехмерные игры и использовать трехмерную графику для визуализации различной информации. Несмотря на внушительные возможности, WebGL отличается от других технологий доступностью и простотой использования, что способствует ее быстрому распространению.

Поддержка браузерами

В настоящий момент WebGL поддерживается следующими браузерами:

Десктопные браузеры

  • Mozilla Firefox (с 4-й версии)
  • Google Chrome (с 9-й версии)
  • Safari (с 6-й версии, по умолчанию поддержка WebGL отключена)
  • Opera (с 12-й версии, по умолчанию поддержка WebGL отключена)
  • IE (с 11-й версии, для других версий можно воспользоваться сторонними плагинами, например, IEWebGL)
Мобильные браузеры и платформы
  • Android-браузер (поддерживает WebGL только на некоторых устройствах)
  • Opera Mobile (начиная с 12-й версии и только для ОС Android)
  • IOS (полная поддержка с версии 8.1)
  • Firefox for mobile (с 4-й версии)
  • Google Chrome для Android (с 25-й версии)
Преимущества использования WebGL:
  • Кроссбраузерность и отсутствие привязки к определенной платформе. Windows, MacOS, Linux - все это неважно, главное, чтобы ваш браузер поддерживал WebGL.
  • Использование языка JavaScript, который достаточно распространен.
  • Автоматическое управление памятью. В отличие от OpenGL, в WebGL не надо выполнять специальные действия для выделения и очистки памяти.
  • Поскольку WebGL для рендеринга графики использует графический процессор на видеокарте (GPU), для этой технологии характерна высокая производительность, которая сравнима с производительностью нативных приложений.
История создания

Наиболее распространенными технологиями отображения компьютерной графики на персональных компьютерах являются Direct3D и OpenGL.

Direct3D - составная часть пакета технологий Microsoft DirectX.

Альтернативная ей технология OpenGL, благодаря ее открытости, получила гораздо более широкое распространение. Реализации OpenGL доступны для различных операционных систем и аппаратных платформ. Спецификация OpenGL была разработана компанией Silicon Graphics Inc. и опубликована как открытый стандарт в 1992 году. Технология оказала огромное влияние на развитие трехмерной графики.

WebGL уходит корнями в OpenGL, однако назвать его прямым потомком нельзя. Непосредственным прототипом WebGL принято считать OpenGL ES (for Embedded Systems для встраиваемых систем), создана в 2003--2004 годах и обновлена в 2007-м (ES 2.0) и в 2012-м (ES 3.0) годах. Переход к версии OpenGL 2.0 обозначился появлением новой важной особенности - поддержкой программных шейдеров. Эта поддержка была перенесена в OpenGL ES 2.0 и стала одним из основных элементов спецификации WebGL 1.0.

В начале 2009 года консорциум Khronos Group (некоммерческий промышленный консорциум, образованный для разработки, публикации и продвижения различных открытых стандартов) учредил рабочую группу WebGL и запустил процесс стандартизации WebGL на основе OpenGL ES 2.0. В 2011-м под его эгидой была выпущена первая версия WebGL. Однако в июне того же года корпорация Microsoft выразила свою обеспокоенность безопасностью технологии WebGL, сославшись на чрезмерные права доступа к оборудованию и ненадежность механизмов защиты. Вице-президент Mozilla Марк Шавер отверг критику Microsoft, назвав опасения преувеличенными. В то время корпорация Microsoft обладала собственной 3D веб-технологией Silverlight 5, основанной на тех же принципах, что и WebGL, которую, тем не менее, корпорация считала достаточно надежной. Позднее Microsoft изменила своё отношение к технологии WebGL, реализовав её поддержку в своем браузере Internet Explorer 11. Корпорация Apple приняла решение о поддержке WebGL в браузере Safari на конференции WWDC в 2014 году.

Обзор фреймворков для разработки на WebGL

Технология WebGL использует низкоуровневое API, этот аспект облегчает внедрение технологии разработчиками браузеров в свои продукты, но создает достаточно большие трудности при создании интерфейсов. Большое количество времени и сил было вложено в разработку библиотек, фреймворков и сторонних программных средств, которые упростили работу разработчикам сайтов.

Достаточно именитая библиотека для разработки приложений с использованием WebGL. Библиотека ориентирована больше на динамическое изменение сцены. Однако последние изменения в репозитории датированы 2014 годом, поэтому есть причины усомниться в актуальности библиотеки на сегодняшний день.

Неполный список функций:

  • Покадровая анимация
  • Поддержка общего освещения, направленного освещения (spot) и точечных источников света
  • Поддержка карты нормалей
  • Анимирование материалов
  • Скелетная анимация
  • Поддержка формата Collada
  • Поддержка карт смещения
  • Рендеринг текста
  • Туман
  • Глубина теней
  • Карты окружения
  • Отражение / преломление
  • Анимация Collada
  • 2d фильтры
  • Culling - удаления скрытых частей сцены из процесса обработки
  • Поддержка LOD - уровни детализации объекта
  • Физика
Библиотека Three JS

Наиболее популярная и активно развивающаяся библиотека на сегодняшний день. Подробная и доступная документация и огромное количество рабочих примеров делают эту библиотеку одним из лидеров среди аналогичных систем.

Неполный список функций:

  • Рендереры - Canvas, SVG или WebGL
  • Добавление и удаление объектов в режиме реального времени
  • Туман
  • Перспективная или ортографическая камеры
  • Каркасная анимация, различные виды кинематики, покадровая анимация
  • Несколько типов источников света - внешний, направленный, точечный
  • Брошенные и полученные тени
  • Шейдеры (GLSL)
  • Объекты - сети, частицы, спрайты, линии, скелетная анимация и так далее
  • Множество предустановленных типов геометрии - плоскость, куб, сфера, тор, 3D текст и так далее
  • Активная поддержка модификаторов - ткань, выдавливание
  • Возможность загрузки множества типов данных - двоичный, изображения, JSON и сцена
  • Экспорт и импорт обьектов Blender, openCTM, FBX, 3D Studio Max и Wavefront .obj файл
Библиотека Babylon JS

Библиотека с открытым исходным кодом для создания полноценных 3D приложений и игр, работающих в веб-браузере без использования сторонних плагинов и расширений. Babylon JS по своим возможностям близок к ThreeJS, однако имеет в своем арсенале некоторые встроенные функции, недоступные в Three JS из коробки. К таким приятным особенностям относятся встроенный физический движок oimo.js - достаточно простой способ создать реалистичный ландшафт, используя карту высот. Разумеется, в three js также присутствуют такие возможности, но реализованы они при помощи различных дополнительных приложений. Однако за функциональность библиотеки приходиться платить нескромным весом в 800 кб.

Список функций:

  • Сцена - использование готовых мешей, туман, скайбоксы
  • Физический движок (модуль oimo.js)
  • Сглаживание
  • Анимационный движок
  • Звуковой движок
  • Система частиц (партиклов)
  • Аппаратное масштабирование
  • Поддержка LOD-ов
  • Автоматическая оптимизация сцены
  • Панель отладки
  • 4 источника освещения - точечный, излучаемый повсюду, прожектор и реалистичное
  • Пользовательские материалы и шейдеры
  • Широкие возможности текстурирования
  • Блики
  • 9 видов камеры, в том числе и для сенсорного управления
  • Экспортеры для 3ds Max, Blender, Unity3D, Cheetah 3d
  • Карта высот
Все более активное внедрение компьютерной графики в повседневную деятельность пользователей требует от разработчиков освоения новых горизонтов. Разумеется, различные задачи требуют индивидуального подхода к реализации приложений. Представленные в статье библиотеки - это всего лишь вершина айсберга.

Каждый разработчик может выбрать библиотеку под свои конкретные нужды - кому-то важна скелетная анимация, кому-то - реалистичный свет или физика, а кто-то является действительно ортодоксальным профессионалом, который не признает ничего кроме чистейшего WebGL API и пишет шейдеры в блокноте. Однако всех объединяет желание создать качественные, легкие и производительные веб-приложения, активно использующие возможности трехмерной графики.

Встраивание графики в веб-страницу

Применение метода Image.Save() для записи изображения в поток ответа ведет к перезаписи любой информации, которую среда ASP.NET использовала бы в противном случае. К счастью, существует более простое решение. Можно воспользоваться HTML-дескриптором или веб-элементом управления Image, но вместо указания статического изображения в качестве источника понадобится выполнить привязку к файлу.aspx, который генерирует динамическое изображение.

Например, рассмотрим любое графическое изображение, созданное средствами GDI+ в предыдущей статье. Оно хранится в файле SimpleDrawing.aspx и записывает динамически сгенерированное изображение в поток ответа (в приведенных примерах в файловый поток). Вывести динамическое изображение на другой странице можно было бы за счет добавления к ней веб-элемента управления Image и установки SimpleDrawing.aspx в качестве значения свойства ImageUrl (либо сгенерированного файла). Затем можно было бы добавить другие элементы управления или даже несколько элементов управления Image, которые устанавливают связь с этим же содержимым.

На рисунке ниже показан пример, в котором используются два дескриптора , указывающие на файл SimpleDrawing.aspx, а также ряд дополнительных веб-элементов управления ASP.NET. расположенных между ними:







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

Использование формата PNG

PNG является универсальным форматом, который всегда обеспечивает высокое качество, сочетая в себе сжатие без потерь GIF-изображений с широкими возможностями цветовой поддержки JPEG. Некоторые браузеры (особенно более старые версии Internet Explorer) неправильно выводят на экран PNG-изображения при их динамическом возвращении из страницы. Вместо содержимого рисунка пользователь получает сообщение с предложением загрузить содержимое рисунка и открыть его в другой программе. Для решения этой проблемы можно применить ранее рассмотренный подход с дескриптором .

Еще одна проблема, связанная с динамической генерацией PNG-изображений - невозможность использования метода Bitmap.Save(), рассмотренного в предшествующей статье. Response.OutputStream является линейным потоком, т.е. данные должны записываться последовательно с начала до конца. Чтобы создать PNG-файл, программные средства.NET должны иметь возможность перемещаться по файлу назад и вперед, что требует потока, который может обеспечивать переход в конкретные позиции.

Решение достаточно просто. Вместо того чтобы выполнять сохранение непосредственно в поток Response.OutputStream, нужно создать поток System.IO.MemoryStream, который представляет собой буфер данных в памяти. Вызовите Bitmap.Save(), чтобы сохранить изображение в поток MemoryStream, а затем запишите MemoryStream в поток Response.OutputStream.

Код, необходимый для реализации этого решения, при условии, что пространство имен System.IO было импортировано, имеет следующий вид:

Protected void Page_Load(object sender, EventArgs e) { using (Bitmap image = new Bitmap(450, 100)) { using (Graphics graphic = Graphics.FromImage(image)) { /* * Какой-то код, генерирующий изображение */ // Сохранить изображение в поток Response.ContentType = "image/png"; // Создать PNG-изображение, хранящееся в памяти MemoryStream mem = new MemoryStream(); image.Save(mem, System.Drawing.Imaging.ImageFormat.Png); // Записать данные MemoryStream в выходной поток mem.WriteTo(Response.OutputStream); } } }

Передача информации динамическим изображениям

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

Эта страница должна состоять из двух частей: страницы, которая содержит элемент управления GridView, и страницы, которая динамически визуализирует одиночный эскиз. Для заполнения списка страница GridView будет многократно вызывать страницу эскиза (используя дескрипторы ).

Имеет смысл сначала разработать страницу, создающую эскиз. В этом примере страница названа ThumbailsViewer.aspx. Чтобы сделать этот компонент максимально универсальным, не следует жестко кодировать какую-либо информацию об используемом каталоге или размерах эскиза. Вместо этого данная информация будет получена с помощью трех строковых аргументов запроса.

Using System.IO; using System.Drawing; using System.Drawing.Imaging; public partial class ThumbailsViewer: System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if ((String.IsNullOrEmpty(Request.QueryString["X"])) || (String.IsNullOrEmpty(Request.QueryString["Y"])) || (String.IsNullOrEmpty(Request.QueryString["FilePath"]))) { // Часть данных отсутствует, поэтому ничего не выводить на экран. // Другие возможные варианты действий - выбор подходящих значений по умолчанию // или возврат изображения со статическим текстом сообщения об ошибке } else { int x = Int32.Parse(Request.QueryString["X"]); int y = Int32.Parse(Request.QueryString["Y"]); string file = Server.UrlDecode(Request.QueryString["FilePath"]); // Создать хранящееся в памяти растровое изображение, // где будет выполняться рисование using (Bitmap image = new Bitmap(x, y)) { using (Graphics graphic = Graphics.FromImage(image)) { // Загрузить данные из файла System.Drawing.Image thumbnail = System.Drawing.Image.FromFile(file); // Нарисовать эскиз graphic.DrawImage(thumbnail, 0, 0, x, y); // Сохранить изображение image.Save(Response.OutputStream, ImageFormat.Jpeg); } } } } }

При первой загрузке страницы необходимо проверить, что вся эта информация предоставлена. Как только основной набор данных получен, объекты Bitmap и Graphics можно создать обычным образом. В данном случае размеры объекта Bitmap должны соответствовать размеру эскиза, поскольку добавлять какое-то дополнительное содержимое не требуется. Создание эскиза не представляет особой сложности. Достаточно загрузить изображение (с использованием статического метода Image.FromFile), а затем вывести его на поверхность рисования. При рисовании изображения нужно указать начальную точку (0, 0), а также высоту и ширину. Высота и ширина соответствуют размерам объекта Bitmap. Класс Graphics автоматически масштабирует изображение в соответствии с этими размерами, применяя сглаживание для создания высококачественного эскиза.

Следующий необходимый шаг - применение этой страницы в странице, которая содержит элемент управления GridView. Основная идея, лежащая в основе базовой страницы, заключается в том, что пользователь будет вводить путь к каталогу и щелкать на кнопке отправки данных. На этом этапе код может выполнить определенную работу с классами пространства имен System.IO. Во-первых, понадобится создать объект DirectoryInfo, который представляет каталог, выбранный пользователем. Во-вторых, с помощью метода DirectoryInfo.GetFiles необходимо получить набор объектов FileInfo, которые представляют файлы в этом каталоге. И, наконец, код должен привязать массив объектов FileInfo к GridView, как показано в следующем примере:

Protected void cmdShow_Click(object sender, EventArgs e) { // Получить строковый массив со всеми файлами изображений DirectoryInfo dir = new DirectoryInfo(txtDir.Text); gridThumbs.DataSource = dir.GetFiles(); // Построить GridView gridThumbs.DataBind(); }

Способ отображения связанных объектов FileInfo определяется шаблоном GridView. В этом примере требуется отобразить два элемента информации - краткое имя файла и соответствующий эскиз. Отображение краткого имени не представляет сложности. Достаточно выполнить привязку к свойству FileInfo.Name. Отображение эскиза требует использования дескриптора для обращения к странице ThumbailsViewer.aspx. Однако построение правильного URL-адреса может оказаться не такой простой задачей, поэтому лучшее решение состоит в том, чтобы перепоручить эту работу методу GetImageUrl из класса веб-страницы.

Графика широко используется в Web. Известно, что одна небольшая картинка может заменить целую страницу текста. Web-дизайнеры без устали совершенствуются и даже соревнуются в оформлении сайтов, а в информационном содержании Web-страниц графическая информация занимает все более весомое место.

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

Другая немаловажная особенность графики для Web заключается в довольно жестких ограничениях, накладываемых на объем файлов. И это связано не столько с экономией дискового пространства компьютера, сколько с пропускной способностью каналов связи. В настоящее время подавляющее большинство посетителей Интернета используют подключение к серверу через модем. Сегодня наиболее производительные модемы обеспечивают скорость передачи данных 57 600 бит/с (около 6 Кбайт/с). Многие используют модемы производительностью 33 600 бит/с и ниже. Если Web-страница загружается в браузер дольше 10 с. это раздражает посетителей, которые могут уйти по другому адресу, так и не дождавшись окончания загрузки. Отсюда следует, что надо стремиться к тому, чтобы Web-страница не превышала по объему 50-60 Кбайт. Для графических изображений это довольно серьезное ограничение, требующее от дизайнеров особых знаний и умения. В частности, нужно хорошо разбираться в форматах файлов и способах монтирования изображений в Web-страницу.

Третья особенность графики состоит в том, что в мире встречаются компьютеры, построенные, как говорится, на различных платформах. Так, существуют компьютеры на платформе PC и на платформе Macintosh. Мониторы этих компыотеров имеют различную яркость. Если этого не учитывать, то одна и та же картинка, великолепно выглядящая на одном мониторе, может потерять свою выразительность на другом. Поэтому художник, занимающийся Web-дизайном или просто публикующий свои произведения и Интернете, должен учитывать это обстоятельство и уметь настраивать свой монитор.

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

В списке возможностей программы, ориентированных на Web-графику, — решение вопросов по оптимизации изображений, создание текстур и кнопок, в том числе интерактивных, «разрезание» картинок, разработка rollover-элементов, создание карт гиперсвязей и пр., а также создание gif-анимации (но о последней возможности мы поговорим в другой раз).

Оптимизация Web-графики

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

Paint Shop Pro имеет встроенные инструменты оптимизации изображений — программа не только обеспечивает собственно процесс оптимизации, но и позволяет осуществить его быстро и достаточно удобно благодаря возможности предварительного просмотра. Предварительный просмотр дает точное представление о том, как будет выглядеть оптимизированное изображение в режиме реального времени, что вкупе с информацией о предполагаемом размере сжатого файла помогает оценить результат оптимизации и удачно подобрать нужные настройки.

Web-графику можно сохранять в форматах сжатия GIF, JPG или PNG. Индексированные изображения, имеющие небольшое количество цветов, сохраняют в формате GIF. Для сохранения полноцветных и полутоновых изображений: фотографий и цветонасыщенной графики, например градиентных заливок, используется формат JPG. Для полноцветных изображений с прозрачными участками применяется формат PNG, который позволяет сохранять как индексированные, так и полноцветные изображения, не теряющие при сохранении в PNG своего качества.

Для примера попробуем сжать обычную фотографию в формате JPG (рис. 1) с оптимизацией. Для этого откроем изображение и воспользуемся командой File=>Export=>JPG Optimizer (Файл=>Экспорт=>JPG-оптимизация), установив на вкладке Quality (Качество) степень сжатия в окне Set compression value to (Установить значение компрессии), например так, как показано на рис. 2. Изображение, полученное в результате JPG-компрессии, представлено на рис. 3 — внешне оно по качеству ничуть не хуже, а его размер оказался на 13 Кбайт меньше.

Рис. 3. Результат оптимизации в формате JPG с коэффициентом сжатия 15

А теперь проведем вариант оптимизированного сжатия индексированного изображения в формате GIF (рис. 4). Откроем изображение и при помощи команды File=>Export=>GIF Optimizer (Файл=>Экспорт=>GIF-оптимизация) установим на вкладке Colors (Цвета) максимальное количество цветов (рис. 5), а на вкладке Format (Формат) выберем вариант появления изображения: Non-Interlaced — появление изображения на Web-странице сразу или Interlaced — постепенное появление с возрастающей детализацией (рис. 6). В результате будет получено оптимизированное изображение, представленное на рис. 7, размер которого, а значит и скорость загрузки, окажется чуть ли не в два раза меньше, чем у исходного.

Если в изображении имеются прозрачные области, что нередко бывает необходимо при создании кнопок, логотипов и иных Web-элементов, то после оптимизации и экспорта в Web они превратятся в белые. Чтобы такого не произошло, необходимо сохранять изображение в формате PNG, указав соответствующие настройки оптимизации. Для примера попробуем сохранить таким образом, например, логотип для детского Web-журнала (рис. 8). Откроем изображение и в меню File=>Export (Файл=>Экспорт) выберем команду PNG Optimizer (PNG-оптимизация), на вкладке Transparency (Прозрачность) установим вариант Single color transparency (Один цвет прозрачный) (рис. 9) — полученное в итоге изображение сохранит свой прозрачный фон (рис. 10). Если бы в изображении не присутствовали градиентные заливки, то можно было бы добиться значительного уменьшения его размера за счет сокращения количества цветов, однако в данном случае это приведет к существенному снижению качества изображения.

Рис. 10. Результат оптимизации в формате PNG с сохранением прозрачного фона

Создание фоновых текстур

Background, или фоновая текстура (background в переводе с англ. означает «фон»), — это стандартный элемент любой Web-страницы, представляющий собой небольшое точечное изображение, которое используется в качестве фона для остальных ее элементов. Фон часто представляет собой имитацию какой-нибудь поверхности — песка, мятой бумаги, дерева, мрамора, неба с плывущими по нему облаками — и способен существенно украсить и оживить Web-страницу. Как правило, фоновые текстуры имеют небольшой фиксированный размер, а браузеры способны генерировать эти небольшие изображения на все пространство страницы. А потому основное требование при создании фоновых текстур для Web — добиться идеального соприкосновения друг с другом образцов — «кирпичиков» фона. Иными словами, основная задача при создании текстуры — получение полностью бесшовного изображения.

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

Текстура из фотографии

Попробуем создать фоновую текстуру на основе фрагмента снимка (рис. 11). Несмотря на то что внешний вид снимка очень напоминает реальную текстуру, в качестве фона для Web-страницы он не подойдет, так как швы между сгенерированными копиями изображений будут заметны. Поэтому воспользуется командой Effects=>Image Effects=>Seamless Tiling (Эффекты=>Эффекты с изображениями=>Бесшовное покрытие) при параметрах, показанных на рис. 12. Обратите внимание, что доступны три метода создания бесшовной текстуры: Edge (Край — смешивает грани изображения), Corner (Угол — смешивает изображение в заданных углах) и Mirror (Зеркало — отражает грани изображения). Выбор одного из них зависит от исходного изображения и от того, какой эффект вы хотите получить. Чаще применяется метод Corner , как и в данном примере.

В итоге будет получено изображение, как на рис. 13, которое уже можно использовать как фоновое — никаких швов заметно не будет (рис. 14).

Текстура на основе встроенных элементов палитры Materials

В программе Paint Shop Pro имеются очень интересные возможности создания текстур на основе изображений палитры Materials (Материалы).

Для начала попробуем создать бесшовную текстуру на основе обычной градиентной заливки. Создадим на прозрачном фоне новое изображение размером 125х125 пикселов (рис. 15). Щелкнем дважды на окне Foreground (Передний план) палитры Materials и выберем подходящий вид градиентной заливки, например Duotone green в стиле Sunburst (рис. 16). Увеличим значение в окне Repeats (Повторение) с нуля, например, до 90 — внешний вид заливки тут же изменится (рис. 17). Возьмем большую кисть с неразмытыми краями и закрасим изображение видоизмененным градиентом (рис. 18).

Применим команду Effects=>Image Effects=>Seamless Tiling (Эффекты=>Эффекты с изображениями=>Бесшовное покрытие) при параметрах, показанных на рис. 19. Результатом будет бесшовная текстура, показанная на рис. 20. Ею уже можно воспользоваться, но фон будет слишком ярким, поэтому в ряде случаев лучше перед применением уменьшить степень прозрачности изображения, дважды щелкнув на имени слоя в палитре Layer и уменьшив значение параметра Opacity (Непрозрачность), например, до 50% (рис. 21). Изображение станет напоминать рис. 22, а если вставить полученную текстуру в Web-страницу, то результат может оказаться похожим на рис. 23.

А теперь попробуем создать текстуру на основе встроенных текстур палитры Materials . Создадим новое изображение размером 125х125 пикселов и закрасим его подходящим цветом (рис. 24). Щелкнем дважды на окне Foreground (Передний план) палитры Materials и выберем более темный цвет, затем включим флажок Texture и выберем понравившийся вариант текстуры для наложения (рис. 25).

Возьмем очень большую неразмытую круглую кисть размером, например, в 200 пикселов (кисть должна быть значительно больше изображения) и один раз щелкнем ею в центре изображения (рис. 26). Очевидно, что для фона Web-страницы изображение слишком яркое, поэтому уменьшим непрозрачность слоя примерно до 40 (рис. 27). Применим команду Effects=>Image Effects=>Seamless Tiling (Эффекты=>Эффекты с изображениями=>Бесшовное покрытие) при параметрах, показанных на рис. 28. Полученная бесшовная текстура показана на рис. 29, а Web-страница с ее использованием — на рис. 30.

Интересные бесшовные текстуры можно получить, воспользовавшись текстурными эффектами. Для этого создадим новое изображение размером 125х125 пикселов и закрасим его подходящим цветом (рис. 31). Воспользуемся командой Effects=>Texture Effects=>Texture (Эффекты=>Текстурные эффекты=>Текстуры) и настроим параметры текстуры в соответствии с рис. 32. Изображение станет напоминать рис. 33. Применим команду Effects=>Image Effects=>Seamless Tiling (Эффекты=>Эффекты с изображениями=>Бесшовное покрытие) при тех же параметрах, что и в предыдущем случае, и получим готовую текстуру (рис. 34), после использования которой в качестве фона Web-страницы страница будет выглядеть примерно так, как на рис. 35.

А теперь для создания бесшовного текстурного фона попробуем воспользоваться подходящей текстурой из палитры Materials , преобразовав ее понравившимся эффектом. Создадим новое изображение размером 125х125 пикселов, откроем в палитре Materials вкладку Pattern (Текстуры) и выберем подходящую текстуру в списке текстур (рис. 36). А затем большой неразмытой круглой кистью закрасим исходное изображение (рис. 37). Воспользуемся командой Effects=>Texture Effects=>Fur (Эффекты=>Текстурные эффекты=>Мех) и настроим параметры текстуры в соответствии с рис. 38. Изображение станет напоминать рис. 39. Применим команду Effects=>Image Effects=>Seamless Tiling (Эффекты=>Эффекты с изображениями=>Бесшовное покрытие) при параметрах, соответствующих рис. 40, и получим текстуру, показанную на рис. 41, которая в случае внедрения в Web-страницу придаст ей вид в соответствии с рис. 42.

Создание кнопок

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

Разновидностей кнопок уже создано немало — ведь любой штрих может придать кнопке неповторимый внешний вид и оригинальность, так что рассмотреть все возможные нюансы в одной статье не представляется возможным. Остановимся лишь на разработке основных типов кнопок.

Но вначале напомним о двух правилах создания кнопок:

  • создавать кнопки нужно только на прозрачном фоне, чтобы потом можно было без проблем вставить кнопку в Web-страницу с любым фоном;
  • сохранять кнопки нужно не просто командой File=>Save (Файл=>Сохранить), а с помощью команд File=>Export=>GIF Optimizer (Файл=>Экспорт=>GIF-оптимизация) или File=>Export=>PNG Optimizer (Файл=>Экспорт=>PNG-оптимизация), поскольку все остальные варианты не позволят сохранить прозрачный фон кнопки.

Кнопка в виде шара

Создадим на прозрачном фоне новое изображение размером 125х125 пикселов (рис. 43). Дважды щелкнем на окне Foreground (Передний план) палитры Materials и установим белый цвет, затем дважды щелкнем на окне Background (Задний план) и на вкладке Gradient выберем подходящий градиент в стиле Sunburst (рис. 44). Для выпуклой кнопки необходимо, чтобы светлая область — некий отблеск света — находилась в левом верхнем углу кнопки, а цветовой переход выполнялся в направлении от светлого к темному, а не наоборот, как в данном случае. Учитывая, что создавать кнопки приходится довольно часто, удобнее специально для кнопки подготовить свой градиент на основе выбранного. Для этого щелкнем на кнопке Edit (Редактирование), затем — на кнопке New (Новый), введем имя нового градиента и отредактируем его параметры (рис. 45). Результат может напоминать рис. 46. Теперь необходимо переместить блик в левый верхний угол примерно так, как это показано на рис. 47. По окончании всех этих действий палитра Materials должна выглядеть в соответствии с рис. 48.

Затем из группы инструментов Preset Shape (Заданные формы) выберем инструмент Ellipse и нарисуем примерно такую же кнопку, как показана на рис. 49. При необходимости из одной такой кнопки можно получить целую серию разноцветных кнопок. Для этого достаточно воспользоваться командой Adjust=>Hue and Saturation=>Hue/Saturation/Lightness (Регулировка=>Оттенок и насыщенность=>Оттенок/Насыщенность/Освещенность), убрать флажок Colorize (Колоризация) и настроить цветовые параметры нужным образом (рис. 50). После нескольких таких манипуляций мы сможем получить несколько разноцветных кнопок, например таких, как представлены на рис. 51. Сохраним каждую из кнопок в своем файле (они нам потребуются в дальнейшей работе) с сохранением прозрачного фона командой File=>Export=>PNG Optimizer (Файл=>Экспорт=>PNG-оптимизация) — созданные файлы в данном случае имеют вид: image1.png, image2.png и image3.png.

Затем при желании к кнопке можно добавить надпись или стрелку. Если надпись должна располагаться внутри кнопки горизонтально, то лучше вначале превратить векторный слой с кнопкой в растровый, щелкнув правой кнопкой на его имени в палитре Layer и выбрав команду Convert to Raster Layer (Конвертировать в растровый слой), а затем напечатать нужный текст, например так, как показано на рис. 52. Или можно просто добавить надпись на новый векторный слой, чтобы потом при необходимости можно было работать с кнопкой и надписью как с отдельными объектами.

Очень популярно размещение текста по окружности вне или внутри контура кнопки. Если речь идет о размещении текста по окружности над кнопкой, то достаточно просто напечатать нужный текст на векторном слое с кнопкой, выделить инструментом Object Selection (Выделение объектов) оба векторных объекта — кнопку и текст — и применить команду Objects=>Fit Text to Path (Объекты=>Разместить текст вдоль пути) — текст разместится вдоль созданной кривой. По умолчанию надпись появляется над кнопкой-шаром, но, как правило, расположена несимметрично. Для ее выравнивания выделим надпись инструментом Object Selection и щелкнем на кнопке Horz. Center in Canvas (Горизонтальное выравнивание относительно центра). Возможно, что в итоге кнопка будет выглядеть так, как показано на рис. 53.

Намного больше времени потребуется в том случае, если нужно, чтобы надпись шла по кривой, но внутри кнопки. В этом случае в палитре Layer выделим векторный слой с кнопкой и щелкнем на кнопке Duplicate Layer (Дублировать слои), создав тем самым вторую копию кнопки. Щелкнем дважды на кнопке во второй копии слоя палитры Layer и вызовем свойства векторного объекта, удалим заливку и сделаем очень тонкую черную границу, чтобы можно было ориентироваться относительно положения и размеров окружности (рис. 54). Немного сместим вспомогательную окружность и изменим ее размеры примерно так, чтобы над ней вполне могла уместиться надпись, располагающаяся в то же время внутри кнопки, например как на рис. 55.

Напечатаем текст и расположим его вдоль кривой, соответствующей вспомогательной окружности. Для этого выделим текст и вспомогательную окружность и воспользуемся командой Objects=>Fit Text to Path (Объекты=>Разместить текст вдоль пути). Затем скорректируем положение текста, а саму вспомогательную окружность сделаем невидимой, щелкнув на кнопке Visibility Togle (Видимость) в палитре Layer . Возможно, результат будет напоминать рис. 56.

Рис. 56. Окончательный вид кнопки с текстом, расположенным по кривой и находящимся внутри кнопки

Следующий этап — необходимость правильно сохранить кнопку, чтобы оставить в сохранности прозрачную область вокруг нее. Учитывая, что кнопка имеет сложную градиентную заливку, которая будет утрачена при сохранении в формате GIF, лучше воспользоваться форматом PNG . Для этого откроем из меню File=>Export (Файл=>Экспорт) команду PNG Optimizer (PNG-оптимизация). На вкладке Color (Цвет) установим вариант 16.7 Million Colors , а вкладку Transparency (Прозрачность) настроим в соответствии с рис. 57. Результат показан на рис. 58 и 59.

Круглая вогнутая кнопка

В принципе, технология создания вогнутой кнопки мало отличается от создания кнопки в виде шара — вся задача состоит в том, чтобы удачно подобрать градиентные заливки для переднего (Foreground ) и заднего (Background ) планов палитры Materials . Градиент должен быть в стиле Sunburst , а направление градиента в случае переднего и заднего планов должно быть прямо противоположным.

Для примера создадим на прозрачном фоне новое изображение размером 125х125 пикселов и настроим градиент переднего плана в соответствии с рис. 60, а заднего — с рис. 61, при этом палитра Materials примет вид, соответствующий рис. 62. Затем из группы инструментов Preset Shape (Заданные формы) выберем инструмент Ellipse и нарисуем примерно такую же кнопку, как показана на рис. 63.

При желании можно, например, добавить к кнопке тень, применив команду Effects=>3D Effects=>Drop Shadow (Эффекты=>3D-эффекты=>Тень) при примерно таких параметрах, как на рис. 64. Результат представлен на рис. 65. После этого следует сохранить кнопку с помощью команды File=>Export=>PNG Optimizer (Файл=>Экспорт=>PNG-оптимизация) (рис. 66).

Рис. 66. Готовая для вставки в Web-страницу кнопка

Прямоугольная пластиковая кнопка

Создадим на прозрачном фоне новое изображение размером 500х400 пикселов и инструментом Rounded Rectangle (Закругленный прямоугольник) нарисуем на нем прямоугольник, примерно такой, как представлен на рис. 67. Сформируем выделенную область на основе созданного векторного объекта командой Selections=>From Vector Object (Выделение=>Из векторного объекта). Создадим новый растровый слой командой Layers=>New Raster Layer (Слои=>Новый растровый слой). После этого, не снимая выделения, воспользуемся командой Effects=>3D Effects=>Cutout (Эффекты=>3D-эффекты=>Контур) с такими параметрами, как, например, на рис. 68. Полученный результат может напоминать рис. 69. Уменьшим непрозрачность слоя примерно до 50%, и в итоге кнопка примет вид, соответствующий рис. 70.

Создадим новый векторный слой и на нем инструментом Ellipse нарисуем в левом верхнем и правом нижнем углах кнопки небольшие белые овалы, а в верхней и нижней частях инструментом Rectangle — узкие белые прямоугольники примерно так, как показано на рис. 71. Потом превратим векторный слой в растровый, щелкнув на векторном слое в палитре Layer правой кнопкой и выбрав команду Convert to Raster Layer (Конвертировать в растровый слой), а затем выполним размытие изображения по Гауссу при помощи команды Adjust=>Blur=>Gaussian Blur (Настройки=>Размытие=>Размытие по Гауссу) с коэффициентом размытия в 3,5 пиксела. Результат может напоминать рис. 72. Для формирования бликов точно таким же образом добавим еще один векторный слой, нарисуем в левом верхнем и правом нижнем углах кнопки белые овалы размером чуть побольше и не столь сплющенные, превратим векторный слой в растровый и выполним размытие по Гауссу с коэффициентом размытия в 3 пиксела. Возможно, кнопка станет напоминать представленную на рис. 73.

Создадим новый векторный слой и нарисуем на кнопке равносторонний белый треугольник, воспользовавшись инструментом Triangle при нажатой клавише Shift . Разместим его в левом углу кнопки, скопируем треугольник в буфер обмена и вставим из буфера на новый слой. Повернем копию треугольника на 180° и разместим его в правом углу кнопки. Чтобы все объекты оказались на одной линии относительно вертикального центра, выделим их инструментом Object Selection и щелкнем на кнопке Vert. Center in Canvas (Вертикальное выравнивание относительно центра). Возможно, что в итоге кнопка будет выглядеть так, как на рис. 74. Допечатаем нужный текст (рис. 75) и сохраним кнопку при помощи команды File=>Export=>PNG Optimizer (Файл=>Экспорт=>PNG-оптимизация) (рис. 76).

Создание rollovers-элементов

Без сомнения, «живые» Web-страницы сразу привлекают внимание, и потому на просторах Всемирной сети с каждым днем их число растет. Одним из способов «оживления» является внедрение элементов дизайна, которые изменяют свой внешний вид (или состояние) в зависимости от поведения мыши. По-английски такие элементы называются rollovers (от roll over — перекатываться, переворачиваться). В русском языке строгого соответствия данному термину не существует, и потому Web-дизайнеры позаимствовали его из английского и называют подобные элементы ролловерами. Примерами типичных ролловеров являются анимированные кнопки; нередко ролловеры используются и при создании других навигационых элементов сайта.

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

Что касается событий, то основными среди них принято считать следующие: Normal — обычное состояние, Over — наведение курсора мыши на элемент и Down — нажатие левой кнопки мыши при ее наведении. Теоретически могут быть задействованы и события: Click — отпускание левой кнопки мыши после нажатия, Up — после отпускания кнопки, Out — при выходе за пределы активной зоны. Однако на практике чаще ограничиваются изменением реакции элемента только на первые три или даже на первые два события.

Анимированная кнопка

При создании анимированной кнопки воспользуемся разноцветными кнопками в виде шара, созданными в одном из предыдущих разделов и сохраненными в виде файлов: image1.png, image2.png и image3.png.

Откроем файл image1.png и воспользуемся командой File=>Export=>Image Mapper (Файл=>Экспорт=>Карта изображения) — откроется окно Image Mapper , которое в начальный момент будет выглядеть как на рис. 77. Обратите внимание на палитру инструментов Tools , служащих для выделения элементов изображения, в отношении которых должно быть определено то или иное ролловер-состояние.

Рис. 77. Исходное состояние окна Image Mapper

В данном случае нам потребуется инструмент Ellipse , при помощи которого нужно выделить на изображении кнопку примерно так, как на рис. 78. При необходимости положение выделенной области можно сразу же скорректировать, воспользовавшись инструментом Move . На следующем этапе введем имя сайта, который должен загружаться по щелчку на данной кнопке в окне URL (рис. 79), а затем щелкнем на кнопке Rollover Creator для того, чтобы определить необходимые ролловер-состояния. В данном примере, учитывая, что у нас в наличии имеются три разноцветные кнопки, определим три ролловер-состояния: Mouse over — для указания изображения, сменяющего исходное при наведении мыши, Mouse out — для возврата исходного изображения, когда мышь оказывается за пределами области, и Mouse down — для определения изображения, которое появится при нажатии левой кнопки мыши (рис. 80). Save (Сохранить) и введем имя создаваемого HTM-файла — в данном случае был создан файл пример1.htm (рис. 81).

Рис. 79. Состояние окна Image Mapper после выделения области
для формирования ролловер-состояния и ввода имени, загружаемого щелчком на кнопке сайта

Рис. 81. Вид Web-страницы при наведении мыши на кнопку — кнопка
поменяла свой исходный цвет, а в строке состояния появилось имя сайта, на который будет осуществлен переход в случае щелчка

Создание слайсов

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

Навигационные элементы

Откроем исходное изображение (рис. 82 — в качестве примера взято изображение с http://www.kasperskylab.ru/), а затем из командного меню File=>Export (Файл=>Экспорт) — уже знакомую нам карту изображения командой Image Mapper (Карта изображения). Активизируем из панели инструментов инструмент Rectangle и с его помощью выделим на изображении часть рабочей области, соответствующей первому слайсу, и в окне URL определим адрес для перехода (рис. 83). Аналогичным образом выделим все остальные слайсы, параллельно задавая для них соответствующие URL . В итоге изображение будет разбито на семь отдельных слайсов, как показано на рис. 84.

После этого щелкнем на кнопке Save пример2.htm (рис. 85).

Рис. 85. Вид Web-страницы при наведении мыши на один из элементов навигационной панели

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

Попробуем добиться того же результата более простым путем. Вновь откроем исходное изображение (см. рис. 82) и воспользуемся командой File=>Export=>Image Slicer (Файл=>Экспорт=>Карта слайсов). Здесь намного беднее набор инструментов, зато имеется нож, при помощи которого можно очень быстро нарезать слайсы прямоугольной формы — достаточно провести им вдоль нужных прямых (рис. 86). Все остальные параметры слайсов определяются как и в предыдущем случае.

Рис. 86. Результат разбиения изображения на слайсы в режиме Image Slicer

Бывают ситуации, когда выгоднее воспользоваться еще одним способом разбиения на слайсы — путем создания сетки. Для примера откроем в качестве исходного рис. 87 и воспользуемся командой File=>Export=>Image Slicer (Файл=>Экспорт=>Карта слайсов). Потом щелкнем на инструменте Grid , а затем — на изображении и зададим число столбцов и строк (рис. 88). Результат будет выглядеть примерно так, как на рис. 89. Разбиение получилось не совсем удачным, и часть разделяющих линий придется переместить — для этого возьмем инструмент Pointer и переместим линии нужным образом, а затем определим все прочие параметры для каждого из слайсов (рис. 90). Обратите внимание, что для перемещения изображения в окне просмотра вам придется использовать инструмент Pan Image . После этого щелкнем на кнопке Save (Сохранить) и введем имя создаваемого HTM-файла — в данном случае был создан файл пример3.htm .

Карты ссылок

Если разрезаемые области имеют отличную от прямоугольной форму, то в этом случае говорят не о слайсах, а о картах ссылок. Рассмотрим данную ситуацию на конкретном примере. Откроем исходное изображение (рис. 91 — в качестве изображения взят рисунок с сайта http://www.grantasticdesigns.com/).

Воспользуемся командой File=>Export=>Image Mapper (Файл=>Экспорт=>Карта изображения). Активизируем из панели инструментов инструмент Ellipse и последовательно выделим им круглые области. Далее возьмем инструмент Polygon (он предназначен для выделения областей произвольной формы и напоминает магнитное лассо) и выделим им фрагменты карты с более сложной формой (прямоугольники, одна из границ которых является вогнутой). Затем, последовательно переходя от слайса к слайсу, определим в окне URL адрес для перехода — в данном примере, чтобы на локальном компьютере проверить работоспособность перехода по ссылкам, в качестве адреса возьмем имя одной из созданных перед этим Web-страниц (рис. 92).

После этого щелкнем на кнопке Save (Сохранить) и введем имя создаваемого HTM-файла — в данном случае был создан файл