This page is an archived copy on Gagin.ru personal site




АрхивРеклама в журналеКнига отзывов
ПодпискаВыходные данныеОбратная связь






ПиНГ


PNG - новый графический формат для Сети

Максим ТИГУЛЕВ
shelter@dataforce.net

Эта история началась в 1978 году, когда израильские исследователи Яков Зив (Jacob Ziv) и Абрам Лемпел (Abraham Lempel) изобрели новый алгоритм компрессии данных без потерь, названный LZ78. Несколькими годами позже Терри Уэлч (Terry Welch) усовершенствовал его и запатентовал под названием LZW. В дальнейшем Уэлч образовал компанию Unisys.

Публикация алгоритма была открытой, любой человек мог взять и использовать его для своих целей, поэтому в 1987 году сотрудник компании CompuServe Боб Берри (Bob Berry) разработал на основе LZW новый формат хранения изображений - Graphic Interchange Format (GIF). Ни сам Берри, ни руководство CompuServe, похоже, не знали про патент и про то, что Unisys берет плату за работу с алгоритмом. Меж тем, Unisys брала деньги только с изготовителей "железа", которые использовали LZW в кремнии, в частности, в модемах с протоколом V.42bis.

Так продолжалось до тех пор, пока у Unisys не случились финансовые трудности. И, чтобы решить их, компания потребовала у изготовителей программного обеспечения, использующего LZW, выплатить ей авторские комиссионные. Наибольшему давлению подверглась CompuServe. В конце концов она сдалась и заключила соглашение, по которому производители программ, поддерживающих формат GIF, должны были выплачивать Unisys авторские гонорары. Об этом было тихо объявлено 28 декабря 1994 года, как раз в разгар рождественских каникул. Однако это заявление всколыхнуло сетевую общественность, досталось "на орехи" и CompuServe, и, когда разобрались получше, Unisys. С этого момента ситуация с GIF стала неопределенной и не прояснилась до сих пор: с одной стороны, за использование LZW надо платить, с другой - большинство производителей программ забывают об этой необходимости... Но главным событием, после заявления CompuServe, стало создание официальной рабочей группы под руководством Томаса Боутела (Thomas Boutell). Перед группой была поставлена задача: создать графический формат, который смог бы заменить устаревший GIF, оставаясь при этом совершенно бесплатным.

После напряженной работы группа явила миру формат PNG (читается "пинг"). Его название не имеет ничего общего с Папуа-Новой Гвинеей (Papua New Guinea), а означает всего лишь Portable Network Graphics - что-то вроде компактной графики для сети.

рис. 1

Чем же он интересен, чем PNG лучше GIF и почему хорош именно для сети? Во-первых, имеется поддержка альфа-канала (переменная прозрачность), значение которого может принимать 254 уровня для каждого элемента изображения. Имея такой канал, мы можем сделать, например, следующий трюк. Помещаем на WWW страницу портрет в овальной рамке, причем фон изображения делаем непрозрачным, внешнее окружение полностью прозрачным, а в полосе между ними делаем плавный переход от одного предела к другому. Тогда при просмотре броузером, поддерживающим PNG, наш портрет на белом фоне будет плавно размываться к белому, а на черном - плавно к черному. Кстати, у GIF прозрачность была бинарной (как мед - или она есть, или ее нет).

Далее, в файл формата PNG записывается информация о гамма-коррекции. Гамма представляет собой некое число, характеризующее нелинейную зависимость яркости свечения экрана вашего монитора от напряжения на электродах кинескопа. Это число, считанное из файла, позволяет ввести поправку яркости при отображении. Нужно оно для того, чтобы картинка, созданная на Mac'е, выглядела одинаково и на PC и на Silicon Graphics. Таким образом, эта особенность помогает реализации основной идеи WWW - одинакового отображения информации независимо от аппаратуры пользователя.

Картинки могут отображаться по мере загрузки (в этом PNG похож на GIF), возможно создание изображений с чередованием (interlacing) не только строк, но и столбцов. При этом изображение не "разматывается" сверху вниз, а возникает постепенно по всей площади, становясь все более четким. Формат GIF мог иметь только одномерное чередование, по строкам. На рисунке представлен логотип PNG на фоне красочной модели, показывающей как сделано двумерное чередование (предмет гордости разработчиков) [рис. 1]. На следующем рисунке показано, как такое изображение развертывается на экране - этот процесс известен под названием "Adam7 interlacing" [рис. 2].

рис. 2

Глубина цвета может быть любой, вплоть до 48 бит, а по шкале серого (grayscale) вплоть до 16 бит, в отличие от GIF, который принципиально не может иметь больше 256 цветов. Такое количество оттенков превышает разрешающую способность глаза и вполне достаточно для натуральной передачи цвета. Сжатие, как и у GIF, происходит без потерь, но по сравнению с ним дает выигрыш от 10 до 30%. Мои собственные эксперименты над оставшимися в коллекции GIF'ами дали интересные результаты. Картинки размером 640х480 с 256 цветами удалось сжать на 10-16%. Другие, в основном мелкие, 320х200 давали результат порядка 7-12%. Однако было два исключения: снимок экрана старой игрушки 320х200 сжался на 50%, а один здоровый рисунок размером 944х496 - аж на 68%. Опыт позволяет сделать вывод: чем больше размер изображения, тем эффективней работает механизм сжатия.

Конечно же, мне захотелось попробовать преобразовать полноцветное изображение. Взяв файл BMP 1024х768 16 млн цветов, размером около 2,4 Мб, я сделал из него PNG, получив файл всего 610 Кб. Не JPEG, конечно, но и не PCX (1,6 Мб для той же картинки). Но так как сжатие происходит без потерь, в новом формате хорошо хранить промежуточные результаты ваших работ, не боясь, что они "испортятся" за счет накопления ошибок. Правда, разработчики и не планировали конкурировать с JPEG, который наверняка так и останется популярным способом хранения графики, требовалось лишь заменить и улучшить ставший платным удовольствием GIF.

Новый формат имеет также трехуровневую систему проверки целостности данных. Первый уровень позволяет сразу выявить ошибку, которая обязательно случится, если при получении файла по протоколу FTP забыть включить режим binary (двоичный). В этом случае система полагает, что вы принимаете текстовый файл и "съедает" символы "возврат каретки" (CR) или "перевод строки" (LF). Соответственно, данные портятся. Чтобы сразу выявить это недоразумение, в самом начале файла ставится "магическая" последовательность из символов CR и LF, анализ которой позволяет обнаружить пропажу и сообщить о порче без распаковки картинки. Второй уровень - 32 битная контрольная сумма (CRC-32) подсчитывается для внутренних цепочек данных и позволяет выявить порчу "на лету", не только не распаковывая изображение, но и даже во время загрузки из Сети (это зависит от "интеллекта" программы). Третий уровень - подобная предыдущей контрольная сумма, но вычисляется она для неупакованных данных, позволяя выявить ошибки кодера или декодера.

Ладно, скажете вы, формат есть, вот он весь из себя хороший и удобный, но существуют ли программы, позволяющие смотреть картинки, сохранять в этом формате результаты, есть ли для работы с ним программы конвертеры, поддерживают ли его, наконец, наши любимые броузеры? Программы есть, под разные операционные системы, для просмотра, преобразования, редактирования, а также их комбинации, правда, к сожалению, их пока не так уж много. Сначала о популярных броузерах: Microsoft ввела поддержку PNG в MSIE 4.0, Netscape почему-то не среагировала ни на нововведение, ни на действия Microsoft, и существует лишь plug-in для Navigator, требующий внедрения картинки с помощью тега <embed>. Его можно обнаружить по адресу: www.siegelgale.com/png/index.html. Имеется версия 1.0 для Navigator, а также версия 2.0 для Communicator. Автор этих строк попробовал первую версию - на первый взгляд интересно, щелчком правой кнопки вызывается меню, которое позволяет поиграть с настройкой яркости, четкости, цветовых компонентов картинки, но затем сам собой возникает вопрос: а зачем это все нужно, если я даже не могу сохранить понравившийся экземпляр? Короче - игрушка, не более. Испытания второй версии порадовали больше - благодаря ей Communicator стал понимать не только тег <embed>, но и обычный <img>, а также сохранять картинки в файле. В документации разработчиков было сказано, что тег <embed> не распознается другими броузерами, кроме тех, что от Netscape, но, когда, работая над домашней страничкой, я во время отладки случайно запустил MSIE 3.0, броузер, как это ни странно, нашел установленный plug-in и воспользовался им, отобразив картинки. Но, все-таки, для того, чтобы формат получил известность и широкое применение, ему необходима внутренняя (native) поддержка вашим броузером. Пока ее нет - PNG только игрушка, а не инструмент. Посмотреть на PNG-картинки, а также попробовать работу plug-in можно на моей домашней странице, располагающейся по адресу: www.dataforce.net/~shelter/

Вернемся, однако, к Netscape: такая политика компании в отношении PNG дает основания считать, что Netscape может отстать от своих соперников. Ведь даже новый потенциальный конкурент известных монстров, Mosaic 3.0, тоже поддерживает PNG (правда, позже выяснилось, что пока это делает только MAC-версия). Не забыл про PNG и первый российский броузер - Ариадна (www.ariadna.ru). Этот шедевр отечественных программистов навевает мысли о самом начале эпохи WWW и о первых бродилках вроде Spry или GNN. Хотя он умеет определять тип кодировки документа на основе анализа входящих в него слов и автоматически показывать правильную кодировку, а также содержит встроенный англо-русский словарь. С виду в интерфейсе нет ничего примечательного, но зато PNG работает отменно. Полная внутренняя поддержка PNG позволила мне, наконец, увидеть, как работает двумерное чередование и канал прозрачности формата PNG. Только так я смог посмотреть демонстрационные PNG-картинки на странице разработчиков www.wco.com/~png/pngs.html.

Блуждая по лабиринту относящихся к теме ссылок, можно обнаружить и такую забаву, как JAVA applet для просмотра PNG-графики - www.cslab.vt.edu/~efrias/png/. Он встроен прямо в гипертекстовую страницу и может показать несколько готовых картинок, большинство из которых я уже посмотрел до этого в FTP-архиве разработчиков (ftp.uu.net/graphics/png/).

Прежде всего имеет смысл рассказать о программах просмотра для DOS, так как они все равно остаются самыми быстрыми и позволяют выжать из видеокарты максимум возможностей. Это, во-первых, замечательная программа QPV (ранее QPEG) - www.tu-clausthal.de/~inof/q.html. Теперь она полностью поддерживает PNG и отображает его даже быстрее GIF. Даже ее автор, Оливер Фромм (Oliver Fromme), рекомендовал преобразовать все GIF в PNG и включил в состав дистрибутива конвертер gif2png.exe собственного сочинения. С идеей преобразования GIF в PNG согласиться можно, но пользоваться указанным конвертером ни в коем случае не следует, так как он никак не хочет преобразовывать файлы в пакетном режиме и выдает сообщения об ошибках. К тому же конвертер сделал мне файлы с какой-то внутренней ошибкой в алгоритме упаковки, которую QPV не видит, но зато обнаруживает другая программа - Thumbs Plus, наотрез отказываясь не только выводить на экран, но даже делать из картинок образцы (Thumbnails). Так что смело выбрасывайте этот конвертер и для преобразований и экспериментов с новым форматом лучше используйте CompuShow 2000.

Другая программа для DOS - CompuShow 2000, версия 2.04a (ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/2show204.zip), содержит в себе средства просмотра и преобразования одиннадцати графических форматов, в том числе и PNG. Основные тесты проводились именно с этой программой, она без проблем справилась с показом и преобразованием даже больших изображений. Процесс идет быстро и качественно, перед преобразованием предлагается настройка самых тонких параметров упаковщика. Таким параметром, например, является алгоритм фильтрации потока данных перед сжатием. Эта возможность предусмотрена спецификацией PNG и позволяет при определенных условиях резко повысить степень сжатия. Следует сказать, что настройки по умолчанию работают хорошо, но ничто не мешает творческому поиску.

Новый формат поддерживает также Graphic Workshop (GWS) от компании Alchemy Mindworks Inc. - www.mindworkshop.com/alchemy/gws.html. Правда, эта программа плохо настраивается под конкретную видеокарту, мне не удалось просмотреть некоторые крупные изображения, также не удалось преобразовать 24 битный PCX в PNG, причем даже не появились сообщения об ошибках - программа просто не захотела сохранить файл.

Windows решила проблемы взаимодействия программ с конкретной системой (по крайней мере теоретически), но за все приходится платить, и в данном случае - быстродействием. Одна из программ сделана специально для PNG - pngview - ftp://swrinde.nde.swri.edu/pub/png-group/bin/mswin/pngview.zip. Она похожа на тестовую, и, наверное, поэтому не отличается особыми "наворотами", имеет весьма неторопливый нрав и даже не дает увидеть, как происходит развертка изображения (кстати, весьма занятное зрелище, если PNG сохранен с двумерным чередованием строк).

Программа Thumbs Plus от Cerious Software - www.cerious.com - представляет собой базу данных для графических файлов и создает из имеющихся изображений их маленькие копии (Thumbnails), позволяя перекидывать файлы из каталога в каталог, просматривать их, редактировать и преобразовывать из формата в формат. Поддерживает массу форматов, про многие из которых я впервые узнал только от нее. Версия 3.2е программы умеет только читать PNG, но проверяет все ошибки в соответствии со спецификацией формата. Поддержка записи и преобразования была обещана в следующих версиях. Если у вас есть хотя бы мегабайт сто картинок, эта программа не покажется вам лишней, уж очень она удобна, красива и имеет большие возможности. А вот теперь еще и PNG...

Попробуйте Ulead Viewer v.1.0 от Ulead Systems Inc. Некоторое время назад существовал мощный графический редактор PhotoStyler - он был создан специалистами этой компании (впоследствии Ulead продал его компании Aldus). Ulead Viewer своим интерфейсом напоминает старый добрый Photostyler 2.0, поставлявшийся со сканерами от НР. Он работает шустро, поддерживает порядка 15 форматов, в их числе и PNG. Работают также конвертеры "из всего во все". Дистрибутив лежит на сервере: ftp://ftp.coast.net/Coast/win3/graphics/ulview11.zip.

Многие называют лучшей из Windows программ ACDSee (на данный момент последняя 32 битная версия - 1.0b6). Я с этим не согласен, лично мне ближе Lview pro, но она сегодня в нашем разговоре не участвует, так как про PNG ничего не знает. ACDSee 95 - www.acdsystems.com/acd/acdsee32.html - тоже показывает PNG, "наворотов" в ней практически нет, так как ее назначение - только просмотр, без редактирования. Свою задачу, однако, она выполняет неплохо. Кстати, ошибку кодирования в моих пострадавших от доморощенного конвертера дядюшки Фромма бывших GIF она обнаруживает тоже.

Вы спросите: хорошо, смотреть PNG нам можно, а можно ли создавать самому изображения и сохранять их в этом формате? Да, редакторы PNG тоже существуют. Многие солидные фирмы поддержали создателей PNG и включили работу с этим форматом в свои продукты. Полный их список приведен на странице разработчиков www.wco.com/~png/pngaped.html. Среди них CorelDraw, начиная с версии 7.0, CorelXARA 1.5 и позднее, Adobe Illustrator, PhotoShop 4.0 и многие другие известные программные продукты для разных операционных систем.

Что же в итоге? Настоящее нового формата не представляется слишком тусклым, и будущее его не покрыто мраком. По данным разработчиков, имеется список из 125 приложений, поддерживающих PNG, правда, многие из них работают под UNIX (одних броузеров штук пять). Netscape, несмотря на рекомендации консорциума W3 и давление разработчиков PNG, по-прежнему только рассматривает поддержку формата в будущем. И пока авторы самого популярного броузера (кто это будет - не ясно) не возьмутся за дело, PNG будет бесполезен. Меж тем, есть наработки по применению PNG в VRML 2.0, существует проект создания на основе PNG формата MNG (Multi-Image Network Graphics), то есть анимационного PNG, вместо GIF89. Поживем - увидим.

Ссылки на информацию о PNG
raptor.csc.flint.umich.edu/~yost/png-docs/intropng.html - ссылки на PNG-сайты.
www.netscapeworld.com/netscapeworld/common/nw.quickfact01.html - краткое введение в тему, таблица сравнительных характеристик PNG и GIF, некоторые ссылки.
www.wco.com/~png/ - домашняя страница авторов, наиболее крупное собрание всяческой информации о PNG, содержит подробное описание формата, историю его создания, информацию для разработчиков, ссылки на приложения для работы с ним.
ftp.uu.net/graphics/png/ - FTP-сервер, содержит описание формата, приложения для работы с ним, исходные тексты библиотек, образцы файлов для тестирования.
www.w3.org/TR/png.html - спецификация PNG от организационного комитета W3.
cwsapps.tower.net.au/32www-reviews.html - эта страница содержит обзор современных броузеров, с описанием их особенностей и возможностей (это может показаться странным, но их больше, чем два!)
www.dataforce.net/~shelter/ - моя домашняя страница с образцами PNG-картинок разного разрешения и глубины цвета.



Ваше имя:   E-mail:
Как вам материал?
Хороший   Так себе   Плохой
А длина?
В самый раз   Перебор   Слишком мало  
Ваше мнение:


АрхивСледующий материалКнига отзывов
К оглавлениюПредыдущий материалОбратная связь

Журнал "Интернет". Регистрационное свидетельство Госкомпечати РФ N. 016370 от 16.07.1997 г. Распространяется через сети розничной торговли, через компьютерные сети, а также путем подписки. Мнение редакции по тем или иным вопросам может не всегда совпадать с мнениями авторов. Редакция не несет ответственности за содержание рекламных материалов. Перепечтка или копирование запрещены, при цитировании ссылка на журнал "Интернет" обязательна.
Copyright © 1997 Журнал "Internet"
Copyright © 1997 Netskate
E-mail: imag@netskate.ru
Телефон: 245-45-84