APNG

Поделись знанием:
Перейти к: навигация, поиск
Animated Portable Network Graphics


Пример APNG (в большинстве браузеров отображается статичной картинкой, за исключением основанных на Gecko и Presto, а также Safari)

MIME-тип

image/png

Опубликован

август 4, 2008 (2008-08-04)

Тип формата

растровая графика

Открытый формат?

Да

APNG (Animated Portable Network Graphics) — формат изображений, основанный на формате PNG и предусматривающий возможность хранения анимации, аналогичной используемой в формате GIF, а также цветов прозрачности (прозрачность 8 бит в противовес одному прозрачному цвету в GIF-изображениях).





История

Спецификация APNG была разработана Стюартом Парментером и Владимиром Вукичевичем из Mozilla Corporation для хранения элементов интерфейса, таких, как анимация загрузки. Mozilla ранее отказалась от MNG (более мощного формата, поддерживающего все возможности APNG) из-за немалого размера MNG-библиотеки;[1] декодер APNG, построенный прямо на библиотеке PNG, был намного меньше.

APNG был плохо встречен людьми, сопровождавшими спецификации PNG и MNG, они подчёркивали, что «PNG — это формат для неподвижных изображений».[2] APNG хранит все кадры, кроме первого, в дополнительных блоках PNG-файла, и работающие с PNG программы будут игнорировать их. В числе возражений — невозможно договориться с сервером о том, что выдавать, PNG или APNG, сложно отличить один от другого, а старая программа даже не предупредит, что есть дополнительные кадры. Таким образом, в Mozilla повторили ту же ошибку, которую совершили разработчики GIF 15 лет назад. Гленн Рэндерс-Персон предложил дать APNG новый MIME-тип наподобие video/png, но Mozilla отказалась от этих предложений в пользу полной обратной совместимости.

20 апреля 2007 года группа PNG официально отказалась признать APNG.[3] Были ещё несколько предложений простейшего анимационного формата, основанного на PNG, но не прошли и они.[4]

В Mozilla Firefox APNG появился в версии 3, 23 марта 2007 года.[5] Но, поскольку libpng поддерживается всё той же группой PNG, поддержки формата APNG, скорее всего, в ней никогда не будет. Браузер Iceweasel в Debian долго не поддерживал APNG, но и он в 2011 году перешёл с официальной библиотеки на модификацию Mozilla.[6]

Роль Mozilla в продвижении формата APNG сравнивается с ролью Netscape в продвижении анимационного GIF.

Также APNG используется для слайдшоу во многих форматах цифрового радио.

Технические особенности

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

Чтобы уменьшить размер, APNG использует промежуточный буфер (спецификация называет его кадровым буфером). Каждый кадр имеет свой режим работы с кадровым буфером:

  1. None — сохранять кадр в кадровый буфер.
  2. Background — очищать кадровый буфер.
  3. Previous — не сохранять кадр в кадровый буфер.

Поддержка программным обеспечением

Поддерживают

Дата Программа/версия
3 октября 2007 KSquirrel 0.7.2
19 декабря 2007 XnView 1.9.2
3 июля 2008 ImageJ 1.41g
14 ноября 2008 Imagine 1.0.4
5 января 2010 TweakPNG 1.4.0
17 февраля 2015 Honeyview 5.10

Не поддерживают

  • ПО компании Adobe (в частности, Adobe Photoshop, Premiere Pro, After Effects; требуются специальные плагины)
  • Paint.NET также требует установки плагина для поддержки APNG.

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

Поддерживают

Дата Программа/версия
14 сентября 2007 Opera 9.5 (пост-альфа)[7]
12 июня 2008 Opera 9.5 (окончательная) и Opera Mobile (не поддерживает с 15.0)
17 июня 2008 Mozilla Firefox 3.0 (а также другое ПО, основанное на Gecko, например, SeaMonkey)
2 июня 2014 Safari 8.0[8] (а также на iOS с версии 8.1)

Не поддерживают

Поддержка в будущем

Microsoft Edge и EdgeHTML будет поддерживать APNG, если [wpdev.uservoice.com/forums/257854-internet-explorer-platform/suggestions/6513393-apng-animated-png-images-support-firefox-and-sa соответствующий тикет] наберёт достаточное число голосов.

Для браузеров на базе Chromium есть [codereview.chromium.org/1250373006/ готовый патч], включающий поддержку APNG, но сама Google патч забраковала, поскольку намерена и дальше продвигать свой формат WebP.

Модули для браузеров

  • Для Google Chrome есть специальное [chrome.google.com/webstore/detail/ehkepjiconegkhpodgoaeamnpckdbblp расширение для отображения APNG]. APNG-анимация отображается посредством конвертирования APNG в анимированный WebP в браузере.
  • Для новой (основанной на WebKit/Blink) версии браузера Opera также может быть использовано упомянутое выше расширение. Его (как и другие расширения для Chrome) можно установить при помощи расширения [addons.opera.com/ru/extensions/details/download-chrome-extension-9/?display=en Download Chrome Extension].
  • Для Mozilla Firefox 3.x были расширения APNG Edit и Animat. Они позволяли создавать APNG.
  • Существовало расширение svg2apng у Mozilla Firefox 3.x.

Сравнение APNG и MNG

MNG APNG
Является отдельным форматом. Надстройка формата PNG: если декодер не поддерживает APNG, он выведет изображение по умолчанию (например, первый кадр).
Каждый кадр состоит из нескольких слоёв, накладывающихся друг на друга; со слоями проводятся сложные операции наподобие масштабирования и обрезки. Каждый кадр только хранит отличия от предыдущего (на манер GIF). APNG разработан с целью занять «экологическую нишу» анимационного GIF и в то же время избавиться от некоторых его ограничений.
Сложен в реализации — объём спецификации 350 килобайт. Прост в реализации — объём спецификации 30 килобайт.
Если нужно закодировать идущего человечка в 4 кадра, MNG может задействовать тот факт, что 1-й и 3-й кадры совпадают. Не способен на такую оптимизацию.
Чтобы все достоинства формата проявились, требуется объектно-ориентированный редактор анимаций или интеллектуальный кодер. Без этого выигрыш перед APNG незначителен. Формату APNG безразлична внутренняя структура кадров и способ подготовки анимации.
Формат слишком сложен, содержит инструкции и потенциально может быть источником уязвимостей Формат прост и содержит только данные

Чем создать APNG

Дополнения к Mozilla Firefox:

  • [addons.mozilla.org/en-US/firefox/addon/5519 APNG Edit]
  • [animat.megabase.ch/en/index.html Animat]

Расширения Opera:

  • [addons.opera.com/ru/extensions/details/screenshoter/?display=ru Screenshoter]

Программы:

  • [sites.google.com/site/cphktool/apng-anime-maker APNG Anime Maker]
  • [www.reto-hoehener.ch/japng/ JapngEditor]
  • [vdubapngmod.sourceforge.net/ VirtualDub APNG Mod]
  • [www.gamani.com/gmgdown.htm GIF Movie Gear]

Плагины APNG:

  • [registry.gimp.org/node/24394 APNG Plug-In for GIMP]
  • [www.isimonbrown.co.uk/plugin-pack/ APNG Plug-In for Paint.NET]

Инструменты командной строки:

  • [gif2apng.sourceforge.net/ gif2apng]
  • [apng2gif.sourceforge.net/ apng2gif]
  • [sourceforge.net/projects/apngopt apngopt]
  • [sourceforge.net/projects/apngasm apngasm]
  • [sourceforge.net/projects/apngdis apngdis]

Онлайн создание APNG:

  • [apngs.com/ APNGs.com]
  • [animizer.net/ru Animizer.net - создание и редактирование APNG и GIF]

Факты

APNG может быть реализован и через стандартную библиотеку libpng. Для этого надо включить поддержку сторонних блоков. После чего можно сделать собственную реализацию APNG.

См. также

Напишите отзыв о статье "APNG"

Примечания

  1. martin. [bugzilla.mozilla.org/show_bug.cgi?id=18574 Bug 18574 - (mng) restore support for MNG animation format and JNG image format]. Mozilla (11 ноября 1999). Проверено 30 марта 2010.
  2. [www.libpng.org/pub/png/spec/1.1/PNG-Misc.html#Multiple-image-extension PNG (Portable Network Graphics) Specification, Version 1.1#8.4. Multiple-image extension]. libpng. Проверено 30 марта 2010. [www.webcitation.org/68APzqHUv Архивировано из первоисточника 4 июня 2012].
  3. [sourceforge.net/mailarchive/message.php?msg_id=131482 VOTE FAILED: APNG 20070405a]. SourceForge mailing list (20 апреля 2007). [www.webcitation.org/68AQ0HRB6 Архивировано из первоисточника 4 июня 2012].
  4. [gjuyn.xs4all.nl/pnganim.html Discussion for a simple "animated" PNG format]. Проверено 12 июля 2011. [web.archive.org/web/20090226103407/gjuyn.xs4all.nl/pnganim.html Архивировано из первоисточника 26 февраля 2009].
  5. [www.mozilla.org/projects/firefox/3.0a3/releasenotes/ Gran Paradiso Alpha 3 release notes]. Mozilla (23 марта 2007). Проверено 30 марта 2010. [web.archive.org/web/20100509065420/www.mozilla.org/projects/firefox/3.0a3/releasenotes/ Архивировано из первоисточника 9 мая 2010].
  6. [bugs.debian.org/cgi-bin/bugreport.cgi?bug=486827#43 Debian Bug #486827 Iceweasel cannot render APNG image]. Debian (26 августа 2011). Проверено 18 сентября 2011. [www.webcitation.org/68AQ0u4xx Архивировано из первоисточника 4 июня 2012].
  7. [my.opera.com/desktopteam/blog/2007/09/14/opera-9-5-build Opera Desktop Team: Post-Alpha Opera 9.5 Release]. [www.webcitation.org/666ofILCS Архивировано из первоисточника 12 марта 2012].
  8. Alexis Deveria. [caniuse.com/#feat=apng Can I use apng?]. Проверено 30 января 2015.

Ссылки

  • [apng.ru Официальный сайт на русском]
  • [wiki.mozilla.org/APNG_Specification Mozilla wiki: спецификация APNG]
  • [people.mozilla.com/~dolske/apng/demo.html Сборник APNG-анимации для проверки поддержки браузером]
  • [chrome.google.com/webstore/detail/ehkepjiconegkhpodgoaeamnpckdbblp Расширение для Google Chrome, включающее анимацию APNG-изображений]
  • [onedrive.live.com/redir?resid=54d7da9cdef82b01!27581&authkey=!ABTsVDGMPEvdcBQ&ithint=folder%2ctxt Попытка добавить APNG в хром через нативный код (также есть для Android)]

Отрывок, характеризующий APNG

– Простите меня за то, что я сделала, – чуть слышным, прерывным шепотом проговорила Наташа и чаще стала, чуть дотрогиваясь губами, целовать руку.
– Я люблю тебя больше, лучше, чем прежде, – сказал князь Андрей, поднимая рукой ее лицо так, чтобы он мог глядеть в ее глаза.
Глаза эти, налитые счастливыми слезами, робко, сострадательно и радостно любовно смотрели на него. Худое и бледное лицо Наташи с распухшими губами было более чем некрасиво, оно было страшно. Но князь Андрей не видел этого лица, он видел сияющие глаза, которые были прекрасны. Сзади их послышался говор.
Петр камердинер, теперь совсем очнувшийся от сна, разбудил доктора. Тимохин, не спавший все время от боли в ноге, давно уже видел все, что делалось, и, старательно закрывая простыней свое неодетое тело, ежился на лавке.
– Это что такое? – сказал доктор, приподнявшись с своего ложа. – Извольте идти, сударыня.
В это же время в дверь стучалась девушка, посланная графиней, хватившейся дочери.
Как сомнамбулка, которую разбудили в середине ее сна, Наташа вышла из комнаты и, вернувшись в свою избу, рыдая упала на свою постель.

С этого дня, во время всего дальнейшего путешествия Ростовых, на всех отдыхах и ночлегах, Наташа не отходила от раненого Болконского, и доктор должен был признаться, что он не ожидал от девицы ни такой твердости, ни такого искусства ходить за раненым.
Как ни страшна казалась для графини мысль, что князь Андрей мог (весьма вероятно, по словам доктора) умереть во время дороги на руках ее дочери, она не могла противиться Наташе. Хотя вследствие теперь установившегося сближения между раненым князем Андреем и Наташей приходило в голову, что в случае выздоровления прежние отношения жениха и невесты будут возобновлены, никто, еще менее Наташа и князь Андрей, не говорил об этом: нерешенный, висящий вопрос жизни или смерти не только над Болконским, но над Россией заслонял все другие предположения.


Пьер проснулся 3 го сентября поздно. Голова его болела, платье, в котором он спал не раздеваясь, тяготило его тело, и на душе было смутное сознание чего то постыдного, совершенного накануне; это постыдное был вчерашний разговор с капитаном Рамбалем.
Часы показывали одиннадцать, но на дворе казалось особенно пасмурно. Пьер встал, протер глаза и, увидав пистолет с вырезным ложем, который Герасим положил опять на письменный стол, Пьер вспомнил то, где он находился и что ему предстояло именно в нынешний день.
«Уж не опоздал ли я? – подумал Пьер. – Нет, вероятно, он сделает свой въезд в Москву не ранее двенадцати». Пьер не позволял себе размышлять о том, что ему предстояло, но торопился поскорее действовать.
Оправив на себе платье, Пьер взял в руки пистолет и сбирался уже идти. Но тут ему в первый раз пришла мысль о том, каким образом, не в руке же, по улице нести ему это оружие. Даже и под широким кафтаном трудно было спрятать большой пистолет. Ни за поясом, ни под мышкой нельзя было поместить его незаметным. Кроме того, пистолет был разряжен, а Пьер не успел зарядить его. «Все равно, кинжал», – сказал себе Пьер, хотя он не раз, обсуживая исполнение своего намерения, решал сам с собою, что главная ошибка студента в 1809 году состояла в том, что он хотел убить Наполеона кинжалом. Но, как будто главная цель Пьера состояла не в том, чтобы исполнить задуманное дело, а в том, чтобы показать самому себе, что не отрекается от своего намерения и делает все для исполнения его, Пьер поспешно взял купленный им у Сухаревой башни вместе с пистолетом тупой зазубренный кинжал в зеленых ножнах и спрятал его под жилет.
Подпоясав кафтан и надвинув шапку, Пьер, стараясь не шуметь и не встретить капитана, прошел по коридору и вышел на улицу.
Тот пожар, на который так равнодушно смотрел он накануне вечером, за ночь значительно увеличился. Москва горела уже с разных сторон. Горели в одно и то же время Каретный ряд, Замоскворечье, Гостиный двор, Поварская, барки на Москве реке и дровяной рынок у Дорогомиловского моста.
Путь Пьера лежал через переулки на Поварскую и оттуда на Арбат, к Николе Явленному, у которого он в воображении своем давно определил место, на котором должно быть совершено его дело. У большей части домов были заперты ворота и ставни. Улицы и переулки были пустынны. В воздухе пахло гарью и дымом. Изредка встречались русские с беспокойно робкими лицами и французы с негородским, лагерным видом, шедшие по серединам улиц. И те и другие с удивлением смотрели на Пьера. Кроме большого роста и толщины, кроме странного мрачно сосредоточенного и страдальческого выражения лица и всей фигуры, русские присматривались к Пьеру, потому что не понимали, к какому сословию мог принадлежать этот человек. Французы же с удивлением провожали его глазами, в особенности потому, что Пьер, противно всем другим русским, испуганно или любопытна смотревшим на французов, не обращал на них никакого внимания. У ворот одного дома три француза, толковавшие что то не понимавшим их русским людям, остановили Пьера, спрашивая, не знает ли он по французски?
Пьер отрицательно покачал головой и пошел дальше. В другом переулке на него крикнул часовой, стоявший у зеленого ящика, и Пьер только на повторенный грозный крик и звук ружья, взятого часовым на руку, понял, что он должен был обойти другой стороной улицы. Он ничего не слышал и не видел вокруг себя. Он, как что то страшное и чуждое ему, с поспешностью и ужасом нес в себе свое намерение, боясь – наученный опытом прошлой ночи – как нибудь растерять его. Но Пьеру не суждено было донести в целости свое настроение до того места, куда он направлялся. Кроме того, ежели бы даже он и не был ничем задержан на пути, намерение его не могло быть исполнено уже потому, что Наполеон тому назад более четырех часов проехал из Дорогомиловского предместья через Арбат в Кремль и теперь в самом мрачном расположении духа сидел в царском кабинете кремлевского дворца и отдавал подробные, обстоятельные приказания о мерах, которые немедленно должны были бытт, приняты для тушения пожара, предупреждения мародерства и успокоения жителей. Но Пьер не знал этого; он, весь поглощенный предстоящим, мучился, как мучаются люди, упрямо предпринявшие дело невозможное – не по трудностям, но по несвойственности дела с своей природой; он мучился страхом того, что он ослабеет в решительную минуту и, вследствие того, потеряет уважение к себе.
Он хотя ничего не видел и не слышал вокруг себя, но инстинктом соображал дорогу и не ошибался переулками, выводившими его на Поварскую.
По мере того как Пьер приближался к Поварской, дым становился сильнее и сильнее, становилось даже тепло от огня пожара. Изредка взвивались огненные языка из за крыш домов. Больше народу встречалось на улицах, и народ этот был тревожнее. Но Пьер, хотя и чувствовал, что что то такое необыкновенное творилось вокруг него, не отдавал себе отчета о том, что он подходил к пожару. Проходя по тропинке, шедшей по большому незастроенному месту, примыкавшему одной стороной к Поварской, другой к садам дома князя Грузинского, Пьер вдруг услыхал подле самого себя отчаянный плач женщины. Он остановился, как бы пробудившись от сна, и поднял голову.
В стороне от тропинки, на засохшей пыльной траве, были свалены кучей домашние пожитки: перины, самовар, образа и сундуки. На земле подле сундуков сидела немолодая худая женщина, с длинными высунувшимися верхними зубами, одетая в черный салоп и чепчик. Женщина эта, качаясь и приговаривая что то, надрываясь плакала. Две девочки, от десяти до двенадцати лет, одетые в грязные коротенькие платьица и салопчики, с выражением недоумения на бледных, испуганных лицах, смотрели на мать. Меньшой мальчик, лет семи, в чуйке и в чужом огромном картузе, плакал на руках старухи няньки. Босоногая грязная девка сидела на сундуке и, распустив белесую косу, обдергивала опаленные волосы, принюхиваясь к ним. Муж, невысокий сутуловатый человек в вицмундире, с колесообразными бакенбардочками и гладкими височками, видневшимися из под прямо надетого картуза, с неподвижным лицом раздвигал сундуки, поставленные один на другом, и вытаскивал из под них какие то одеяния.
Женщина почти бросилась к ногам Пьера, когда она увидала его.
– Батюшки родимые, христиане православные, спасите, помогите, голубчик!.. кто нибудь помогите, – выговаривала она сквозь рыдания. – Девочку!.. Дочь!.. Дочь мою меньшую оставили!.. Сгорела! О о оо! для того я тебя леле… О о оо!
– Полно, Марья Николаевна, – тихим голосом обратился муж к жене, очевидно, для того только, чтобы оправдаться пред посторонним человеком. – Должно, сестрица унесла, а то больше где же быть? – прибавил он.
– Истукан! Злодей! – злобно закричала женщина, вдруг прекратив плач. – Сердца в тебе нет, свое детище не жалеешь. Другой бы из огня достал. А это истукан, а не человек, не отец. Вы благородный человек, – скороговоркой, всхлипывая, обратилась женщина к Пьеру. – Загорелось рядом, – бросило к нам. Девка закричала: горит! Бросились собирать. В чем были, в том и выскочили… Вот что захватили… Божье благословенье да приданую постель, а то все пропало. Хвать детей, Катечки нет. О, господи! О о о! – и опять она зарыдала. – Дитятко мое милое, сгорело! сгорело!
– Да где, где же она осталась? – сказал Пьер. По выражению оживившегося лица его женщина поняла, что этот человек мог помочь ей.
– Батюшка! Отец! – закричала она, хватая его за ноги. – Благодетель, хоть сердце мое успокой… Аниска, иди, мерзкая, проводи, – крикнула она на девку, сердито раскрывая рот и этим движением еще больше выказывая свои длинные зубы.
– Проводи, проводи, я… я… сделаю я, – запыхавшимся голосом поспешно сказал Пьер.
Грязная девка вышла из за сундука, прибрала косу и, вздохнув, пошла тупыми босыми ногами вперед по тропинке. Пьер как бы вдруг очнулся к жизни после тяжелого обморока. Он выше поднял голову, глаза его засветились блеском жизни, и он быстрыми шагами пошел за девкой, обогнал ее и вышел на Поварскую. Вся улица была застлана тучей черного дыма. Языки пламени кое где вырывались из этой тучи. Народ большой толпой теснился перед пожаром. В середине улицы стоял французский генерал и говорил что то окружавшим его. Пьер, сопутствуемый девкой, подошел было к тому месту, где стоял генерал; но французские солдаты остановили его.