Анимационные картинки: что это и как их создавать.
Содержание.
Введение. Что такое animated GIF. Структура файла GIF89a. Создание анимаций. Оптимизация анимаций. Использование анимаций. Дополнительная информация. |
Динамический GIF можно определить, как стандарт графического файла, позволяющий размещать в одном файле несколько изображений, для их последовательного вывода на экран с целью создания эффекта мультипликации. Первым таким стандартом явился GIF87a, который предусматривал следующие возможности GIF-файла:
- Чередование (interlacing). Вначале загружается только "остов" изображения, потом, по мере загрузки, оно детализируется. Это позволяет на медленных линиях не грузить весь графический файл целиком для того, чтобы получить о нем представление.
- Сжатие (compression) по алгоритму LZW. Эта черта GIF-файлов держит их в лидерах по наименьшему объему файла.
- Несколько изображений в одном файле.
- Расположение картинки на логическом экране. То есть, формат позволял определить логическую экранную область для вывода изображений, и помещать картинки в произвольном месте этой области.
- Включение в графический файл комментариев (не отображаются на экране, но могут быть прочитаны программой, поддерживающей GIF89a).
- Управление задержкой перед сменой кадров (задается в 1/100 секунды, или ожидание ввода пользователя).
- Управление удалением предыдущего изображения. Предыдущее изображение может быть оставлено, заменено на цвет фона или на то, что было перед ним.
- Определение прозрачного цвета.
- Вывод текста.
- Создание управляющих блоков прикладными программами (application-specific extensions). Внутри GIF-файла вы можете создать блок, который буде игнорироваться всеми программами, кроме той, для которой он предназначен.
Файл GIF89a состоит из болков, расположенных в определенной
последовательности. Выделяют блоки трех типов:
Управляющие блоки: заголовок, описание логического экрана, управление
графическими расширениями, признак конца - определяют, как будут обрабатываться
изображения;
Блоки изображения: изображение, текст, описание палитры - содержат
данные для самого изображения;
Специальные блоки: комментарии, прикладные расширения - никак не влияют
на изображение, но могут обрабатываться прикладными программами по их усмотрению.
Среди подобных блоков особо следует выделить прикладной блок Netscape Loop -
он присутствует практически в каждой анимации (при этом, это единственный
блок прикладной программы, в данном случае Netscape, который я встречал).
Если браузер (теперь уже не только Netscape) видит этот блок, он проигрывает
анимацию не один раз, а столько, сколько в нем указано раз, или бесконечно).
Общая схема следования этих блоков вприблизительно такова:
- Заголовок - GIF87a или GIF89a - определяет формат файла.
- Описание логического экрана (задаются размер экрана, на который "претендует" данный файл)
- Описание глобальной палитры (необязательно, но крайне желательно)
- Произвольное количество блоков изображения (в том числе текстовых), или пар блоков <управление графическими расширениями - изображение>. Блок управления графическим расширением может содержать в себе указание на локальную палитру, расположение на логическом экране, задержку и способ удаления изображения, и оказывает влияние только на следующий непосредственно за ним блок изображения.
- Завершитель (признак конца).
- До описания глобальной палитры (если оно есть) или до описания логического экрана.
- Между блоком управления и соответствующим ему блоком изображения (то есть, они могут там находиться, но тогда блок управления уже не будет ничем управлять)
- После признака конца.
Что необходимо для создания анимаций? В первую очередь необходимо иметь набор картинок - кадров для будущей анимации, или, по крайней мере, представление о них. Далее необходима программа, поддерживающая GIF89a. С сожалением приходится отметить, что Photoshop, хоть и поддерживает палитры, чередование, сжатие и прозрачный цвет, для этой цели не подходит, так как несколько картинок в одном файле в нем не сохранишь, зато его можно использовать для создания каждого кадра в отдельности. Из программ, создающих GIF89a, были испробованы следующие:
- Ulead GIF Animator v2.0; Ulead Systems, Inc;
- GIFFY v1.2, The GIF Animation Builder; WebReady corp;
- GIF Construction Set 32; Alchemy Mindworks, Inc;
- Microsoft GIF Animator v1.0; Microsoft corp;
- Желательно не использовать локальных палитр - такие картинки читаются, но в некоторых случаях это приводит к неправильному изображению цветов.
- Задавайте прозрачный цвет глобально - локальный прозрачный цвет не поддерживается.
- Ожидание ввода пользователя не поддерживается.
- Не поддерживается замена картинки на то, что было перед ней при удалении.
- Если картинка не умещается на логическом экране, это может привести даже к аварийному завершению работы браузера, в лучшем случае - последствия непредсказуемы.
- В некоторых версиях браузеров кадры не проигрываются быстрее, чем с задержкой в 34/100 секунды
Оптимизация призвана обеспечить наименьший размер получившегося
файла. В общем случае, если вы создали анимацию, например, из 20 GIF файлов,
то размер получившигося файла будет равен сумме размеров использованых вами
файлов. Если размер в 20 килобайт считается приемлемым для картинки на странице,
то такого нельзя сказать про файл размером 400 килобайт. К счастью, существуют
способы значительно уменьшить размер анимации. Они работают в двух направлениях -
оптимизация палитры и удаление избыточной информации.
GIF файл позволяет вам использовать любое число цветов в картинке от 2-х до
256. При этом, чем меньше цветов, тем меньший объем занимает файл, кроме того,
описание палитры тоже требует места, и оптимизация палитры заключается в том,
что необходимо ограничится минимально необходимым числом цветов, и по возможности
не пользоваться локальными палитрами, а использовать глобальную.
В том случае, когда ваша анимация представляет собой лишь последовательную
демонстрацию несвязанных между собой видов, никуда не денешься от того, чтобы
сохранить каждый из них в вашем файле. Однако, если анимация - последовательное
преобразование картинки, при этом в каждом кадре изменяется лишь небольшая
часть рисунка, нет никакой необходимости в сохранении всего рисунка столько
раз, сколько кадров в анимации. Тут необходимо воспользоваться "ножницами"
и размещением на логическом экране. Пусть первый кадр займет всю логическую
область - он будет служить фоном, на который для каждого кадра будет
в строго определенном месте накладываться "заплатка", содержащая те изменения,
которые необходимо сделать в этом кадре. Самое сложное - правильно эту
"заплатку" расположить - запоминайте координаты левого верхнего угла той области,
которую вы вырезали, и используйте их в качестве смещения. Будте внимательны -
если вы хотите создать на вашем экране эффект "полета" или "скольжения" изображения
по фону, не забывайте, что каждый следующий кадр должен содержать не только
новое положение объекта, но и устранять следы предыдущего.
Хорошее известие - вы можете найти программу, которая выполнит практически
всю работу по оптимизации за вас. Такой возможностью обладают Ulead GIF Animator
и GIF Construction Set. Файл sample.gif,
который был создан специально по случаю написания данной статьи, создавался
постепенно путем пририсовывания новых и новых деталей. Каждый кадр целиком
помещался в Ulead GIF animator, и размер итогового файла составил 143К. Результат
автоматической оптимизации - файл размером 4К. Аналогичного результата
можно добиться и с помощью GIF Construction Set, однако эта программа создает
не полностью совместимые файлы, которые нуждаются в последующей ручной обработке.
Итак, у вас есть готовая GIF-анимация. Процедура помещения ее на web-сайт ничем не отличается от помещения туда же ее не анимированного собрата - простого GIFа. Когда стоит использовать динамические GIFы, а когда предпочесть другие способы оживления содержания? К достоинствам динамических GIFов можно отнести:
- не требуется никаких plug-in для их просмотра
- небольшой объем файла за счет сжатия
- может быть помещен в кэш, не требует повторного обращения к серверу
- не требует для работы постоянной связи с сервером
- просто поместить на страницу, не требуется никакого программирования
- палитра не превышает 256 цветов
- сжатие фотографий хуже, чем в JPEG
- не поддерживается браузерами в полном объеме
- любой может легко "позаимствовать" результат ваших многочасовых трудов (так же, как и в случае обычных картинок)
За дополнительной информацией можно обратиться по адресу:
http://member.aol.com/royalef/gifanim.htm -
GIF animation on WWW
http://www.webreference.com/graphics/specs.html -
GIF89a specifications from Compuserve