Каждый из пользователей Интернет уже вполне привычно воспринимает появляющиеся почти на каждой странице картинки-мультфильмы, так называемые динамические, или анимационные (animated) GIFы. Чаще всего именно такими являются рекламные баннеры. Оно и понятно - во-первых, мультипликация привлекает гораздо больше внимания, чем статическая картинка, во-вторых, на небольшой площади можно уместить гораздо больше информации за счет чередующихся кадров. Но эти же свойства могут оказаться весьма полезными любому вебмастеру, который стремится сделать свой сайт более привлекательным. Поэтому Вашему вниманию и предлагается данная статья, которая рассматривает вопросы создания и использования таких картинок.
^ ВВЕРХ ^Динамический GIF можно определить, как стандарт графического файла, позволяющий размещать в одном файле несколько изображений, для их последовательного вывода на экран с целью создания эффекта мультипликации. Первым таким стандартом явился GIF87a, который предусматривал следующие возможности GIF-файла:
В дальнейшем, этот стандарт был раширен спецификацией GIF89a, которая добавила следующие возможности:
Как видно, стандарт GIF89a - весьма мощный инструмент для создания анимаций и их применения в WWW, однако необходимо учитывать тот факт, что если некоторые специальные графические программы и поддерживают этот стандарт в полном объеме, то это не относится к наиболее рапространенным браузерам, поэтому для применения динамических GIFов для WWW лучше ориентироваться не на сам стандарт, а на возможности браузеров по его поддержке.
^ ВВЕРХ ^Файл GIF89a состоит из болков, расположенных в определенной
последовательности. Выделяют блоки трех типов:
Управляющие
блоки: заголовок, описание логического экрана, управление графическими
расширениями, признак конца - определяют, как будут обрабатываться
изображения;
Блоки изображения: изображение, текст,
описание палитры - содержат данные для самого изображения;
Специальные блоки: комментарии, прикладные расширения - никак
не влияют на изображение, но могут обрабатываться прикладными программами по их
усмотрению. Среди подобных блоков особо следует выделить прикладной блок
Netscape Loop - он присутствует практически в каждой анимации (при этом,
это единственный блок прикладной программы, в данном случае Netscape, который я
встречал). Если браузер (теперь уже не только Netscape) видит этот блок, он
проигрывает анимацию не один раз, а столько, сколько в нем указано раз, или
бесконечно).
Общая схема следования этих блоков вприблизительно
такова:
Комментарии и специальные блоки могут распологаться где угодно, кроме как:
Также, если Вы хотите поместить в ваш файл расширение Netscape Loop, то этот блок должен следовать непосредственно за глобальной палитрой.
^ ВВЕРХ ^Что необходимо для создания анимаций? В первую очередь необходимо иметь набор картинок - кадров для будущей анимации, или, по крайней мере, представление о них. Далее необходима программа, поддерживающая GIF89a. С сожалением приходится отметить, что Photoshop, хоть и поддерживает палитры, чередование, сжатие и прозрачный цвет, для этой цели не подходит, так как несколько картинок в одном файле в нем не сохранишь, зато его можно использовать для создания каждого кадра в отдельности. Из программ, создающих GIF89a, были испробованы следующие:
Подробно рассказывать про интерфейс этих программ не имеет смысла, поэтому будут рассмотрены только основные принцыпы работы с этими, и им подобными программами. Процесс создания анимации можно разделить на две важные составляющие - собственно ее создание и, затем, оптимизация. Процесс создания прост - вы берете поочереди кадры и добавляете их к своему GIF-файлу. При этом программы Ulead, Alchemy Mindworks и Microsoft имеют приятную особенность - они позволяют добавлять кадры не из файла, а из буфера обмена, т.е. если вы постепенно трансформируете свою картинку по мере следования кадров, вы лишены необходимости каждое изменение завершать командой Save As..., достаточно <Ctrl-A>, <Ctrl-C>, <Alt-Tab> и <Ctrl-V>. Кроме того, хочется особо выделить программу Ulead Gif Animator, которая позволяет по начальному и конечному изображению построить анимацию с помощью одного из целого ряда эффектов, например, наплыв новой картинки поверх старой, смена листа бумаги и многое, многое другое, что позволяет создавать небольшие презентации в одном файле. После того, как кадры забиты в файл, начинается расстановка управляющих блоков. Важно понимать, что все-таки GIF89a файл состоит из блоков, хотя все из вышеперечиленных программ, кроме Gif Construction Set, их не показывают непосредственно. В них глобальные управляющие блоки интерпретируются как свойства файла, а локальные - как свойство картинки. Может, это и к лучшему - меньше возможностей совершить ошибку. Итак, вам нужно для каждого кадра задать задержку, если надо, то локальную палитру, положение на логическом экране и способ удаления. Программы Microsoft и Alcemy позволяют выделить произвольно несколько блоков, и задать для них все параметры. В остальных вы можете изменять только каждый блок в отдельности, или все сразу. Посмотреть, что у вас получается, можно с помощью кнопки Preview. Однако, это не всегда удачная идея из-за уже упоминавшихся проблем совместимости, поэтому убедиться в том, что все работает, можно только запустив ваш любимый браузер. По поводу совместимости можно посоветовать следующее:
После того, как анимация готова, начинается самый интересный этап - оптимизация.
^ ВВЕРХ ^Оптимизация призвана обеспечить наименьший размер получившегося
файла. В общем случае, если вы создали анимацию, например, из 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ов можно отнести:
Как и у всякой медали, у динамических GIFов есть и обратная сторона:
За дополнительной информацией можно обратиться по адресу:
http://www.fortunecity.com/skyscraper/wav/1451/des/tppmsgs/msgs0.htm#6 -
GIF animation on WWW
http://www.fortunecity.com/skyscraper/wav/1451/des/tppmsgs/msgs0.htm#7 -
GIF89a specifications from Compuserve