APNG
| Animated PNG | |
Exemplu de imagine Animated PNG (APNG); în programele fără suport pentru animația APNG este afișată numai imaginea statică | |
| Extensie de fișier | |
|---|---|
| Tip MIME | image/png, image/apng, image/vnd.mozilla.apng |
| Dezvoltat de | Mozilla Foundation, ulterior standardizat de W3C |
| Lansat | 27 august 2004 |
| Tipul formatului | imagine raster animată cu compresie fără pierderi |
| Extins din | PNG |
| Standard(e) | W3C, Portable Network Graphics (PNG) Specification (Third Edition) |
| Format deschis? | da |
| Modifică text | |
Animated Portable Network Graphics (APNG) este un format de fișier care extinde formatul Portable Network Graphics (PNG) pentru a permite stocarea unor imagini animate bazate pe cadre. Este destinat unor utilizări asemănătoare imaginilor GIF animate, dar păstrează caracteristicile grafice ale PNG, inclusiv adâncimi de culoare mai mari și transparență alfa completă, care nu sunt disponibile în GIF.[1] Formatul a fost dezvoltat în cadrul proiectului Mozilla în 2004.[2]
APNG moștenește caracteristicile de imagine ale PNG. Specificația PNG permite imagini în tonuri de gri, cu culori indexate și truecolor, un canal alfa opțional și adâncimi ale eșantioanelor cuprinse între 1 și 16 biți.[3] În cazul APNG, cadrele utilizează aceeași adâncime de culoare, același tip de culoare, aceeași metodă de compresie, filtrare și întrețesere și, dacă este cazul, aceeași paletă ca imaginea statică.[1]
Formatul este compatibil retroactiv cu decodoarele PNG care nu cunosc extensia APNG. Fiecare flux PNG conține o imagine statică, iar un fișier APNG conține în plus o secvență de cadre animate. Imaginea statică poate constitui primul cadru al animației, dar poate fi și separată de aceasta. Un decodor PNG fără suport APNG ignoră blocurile auxiliare specifice animației și afișează imaginea statică.[1]
Specificația W3C definește pentru APNG tipul media image/apng; image/vnd.mozilla.apng, utilizat anterior, este indicat ca alias depreciat. Extensia specifică înregistrată este .apng, deși fișierele APNG sunt întâlnite frecvent și cu extensia .png datorită compatibilității cu PNG.[4]
APNG a concurat inițial cu Multiple-image Network Graphics (MNG), un format mai amplu pentru animații raster, dezvoltat de comunitatea PNG. Avantajele urmărite de APNG au fost o implementare mai simplă și compatibilitatea cu programele care puteau deja interpreta imagini PNG statice.[2]
Istoric și dezvoltare
[modificare | modificare sursă]Specificația APNG a fost creată în 2004 de Stuart Parmenter și Vladimir Vukićević, de la Mozilla Corporation, pentru stocarea animațiilor necesare unor elemente de interfață, precum indicatoarele animate de activitate (throbbers).[2][5]
Mozilla eliminase în mai 2003 suportul pentru animațiile MNG. Unul dintre motivele discutate a fost dimensiunea suplimentară a codului necesar decodorului MNG. În discuțiile dezvoltatorilor Mozilla a fost citată, pentru anumite configurații, o reducere de aproximativ 300 KB a executabilului Firebird după eliminarea suportului MNG, dar cifrele raportate variau în funcție de platformă și de configurația compilării.[6] În aceeași dezbatere, Brendan Eich estima implementarea APNG la aproximativ 5 KB de cod suplimentar peste suportul PNG existent.[2]
Propunerea APNG a avut inițial o primire rezervată printre dezvoltatorii și întreținătorii PNG și MNG. Una dintre obiecții era că PNG fusese conceput ca format pentru o singură imagine, iar animația APNG era introdusă prin blocuri auxiliare care puteau fi ignorate de programele PNG existente.[7]
Această soluție asigura compatibilitatea cu decodoarele PNG existente, dar ridica probleme legate de diferențierea unui PNG static de un APNG și de negocierea tipului de conținut. Un program vechi putea afișa imaginea statică fără a informa utilizatorul că fișierul conținea și o animație.
Glenn Randers-Pehrson a încercat să reconcilieze aceste poziții, propunând modificări ale formatului și folosirea unui tip MIME distinct. Susținătorii APNG au adoptat tipul image/apng, dar au continuat să permită extensia .png pentru compatibilitate.[8][9]
PNG Development Group a respins la 20 aprilie 2007 includerea APNG ca extensie oficială a PNG.[10] În anii următori au fost discutate și alte metode pentru realizarea unui format animat bazat pe PNG.[11]
Situația s-a schimbat după reactivarea procesului de standardizare PNG în cadrul W3C. PNG Working Group a fost însărcinat cu întreținerea și dezvoltarea specificației, iar primul proiect public al PNG Specification (Third Edition) a fost publicat la 25 octombrie 2022. APNG a fost astfel introdus în specificația PNG de bază, formalizând cele trei blocuri de animație care fuseseră până atunci o extensie implementată în practică.[12]
O versiune Candidate Recommendation Snapshot a fost publicată la 21 septembrie 2023, iar după alte revizuiri, Portable Network Graphics (PNG) Specification (Third Edition) a devenit Recomandare W3C la 24 iunie 2025.[12] Ediția a treia a adăugat în mod oficial APNG și suportul PNG pentru imagini cu gamă dinamică ridicată (HDR).[13]
Formatul fișierului
[modificare | modificare sursă]APNG păstrează structura unui flux PNG și introduce trei tipuri de blocuri auxiliare pentru descrierea animației: acTL, fcTL și fdAT.[1]
- Blocul de control al animației,
acTL(Animation Control Chunk), trebuie să apară înaintea primului blocIDAT. El indică faptul că fișierul conține o animație și stochează numărul total de cadre (num_frames) și numărul de redări ale animației (num_plays). Valoarea 0 pentrunum_playsindică repetarea nelimitată.[14] - Blocul de control al cadrului,
fcTL(Frame Control Chunk), descrie fiecare cadru. Există exact un astfel de bloc pentru fiecare cadru al animației. El conține numărul de secvență, dimensiunile cadrului, poziția sa în suprafața imaginii, durata de afișare și operațiile de eliminare și compunere.[15] - Blocul de date al cadrului,
fdAT(Frame Data Chunk), conține datele comprimate ale cadrelor ulterioare. Structura sa este asemănătoare cu cea a unui blocIDAT, dar este precedată de un număr de secvență.[16]
Blocurile fcTL și fdAT folosesc împreună o secvență de numere pe 4 octeți, pornind de la zero. Primul fcTL are numărul 0, iar următoarele blocuri fcTL și fdAT trebuie să aibă numere strict crescătoare, fără goluri sau duplicate. Aceste numere permit detectarea și, în anumite situații, corectarea erorilor de ordine a blocurilor.[1]

Există două structuri valide pentru relația dintre imaginea statică și animație. Dacă un bloc fcTL apare înaintea datelor IDAT, imaginea statică reprezintă și primul cadru al animației. Dacă nu există un fcTL înainte de IDAT, imaginea statică este separată și nu face parte din secvența animată; primul cadru al animației este descris ulterior prin fcTL și fdAT.[1]
Operația dispose_op stabilește ce se întâmplă cu regiunea ocupată de un cadru după expirarea timpului său de afișare: aceasta poate fi păstrată, înlocuită cu pixeli complet transparenți sau restaurată la starea anterioară. blend_op stabilește dacă noul cadru înlocuiește direct regiunea corespunzătoare (APNG_BLEND_OP_SOURCE) sau este compus peste conținutul existent folosind canalul alfa (APNG_BLEND_OP_OVER).[15]
Cadrele unei animații folosesc aceeași adâncime de culoare, același tip de culoare, aceeași metodă de compresie, filtrare și întrețesere și aceeași paletă, dacă există, ca imaginea PNG statică. Dimensiunile și poziția fiecărui cadru pot însă fi definite separat prin fcTL.[16]
Compatibilitatea cu PNG rezultă din regulile formatului pentru blocurile auxiliare necunoscute: un decodor PNG care nu recunoaște blocurile APNG le poate ignora și poate continua să interpreteze imaginea statică.[1]
Compresie și optimizare
[modificare | modificare sursă]Pentru reducerea dimensiunii fișierelor APNG pot fi folosite mai multe tehnici. Printre acestea se află optimizarea între cadre, prin stocarea numai a zonelor care se modifică de la un cadru la altul, folosirea operațiilor de compunere alfa și de eliminare a cadrului, cadre parțiale mai mici decât suprafața completă a imaginii și optimizarea transparenței, a tipului de culoare și a paletei.[17]
Datele de imagine sunt comprimate conform mecanismului PNG, iar instrumentele de creare APNG pot utiliza implementări diferite ale compresiei zlib pentru a căuta o reprezentare mai compactă. APNG Assembler, de exemplu, oferă opțiuni de optimizare care folosesc zlib, 7-Zip sau Zopfli.[18]
Formate și utilizări derivate
[modificare | modificare sursă]Signal utilizează APNG pentru stickerele animate. Conform documentației oficiale Signal, un sticker animat trebuie furnizat ca fișier APNG, nu GIF, are o limită de 300 KB și o durată maximă a animației de trei secunde. Imaginile sunt redimensionate la 512 × 512 pixeli. Signal recomandă pentru animații 30 sau 60 de cadre pe secundă și o repetare continuă fără întrerupere vizibilă.[19]
Suport
[modificare | modificare sursă]Mozilla Firefox a introdus suport pentru APNG în versiunile de dezvoltare ale Firefox 3 la 23 martie 2007.[20]
Pentru o perioadă îndelungată, suportul APNG nu a făcut parte din distribuția principală libpng, deoarece extensia nu fusese aprobată de PNG Development Group. Au existat în schimb versiuni modificate și un patch APNG separat pentru libpng, folosite inclusiv de software derivat din Mozilla.[21] După standardizarea APNG prin PNG Third Edition, situația s-a schimbat: în 2026 proiectul patch-ului a anunțat integrarea suportului în libpng, iar ramura de dezvoltare libpng18 conține suport explicit pentru APNG și pentru blocurile acTL, fcTL și fdAT.[21][22]
Versiunile Debian ale Firefox distribuite sub numele Iceweasel au folosit varianta Mozilla a libpng pentru a asigura redarea APNG.[23]
În 2008, WorldDMB a adoptat APNG ca extensie compatibilă retroactiv pentru animații în aplicația MOT SlideShow destinată radiodifuziunii digitale. Specificația APNG 1.0 - Animated Portable Network Graphics este inclusă ca anexa normativă A în standardul ETSI TS 101 499 V2.2.1.[24]
În ecosistemul iMessage introdus odată cu iOS 10, APNG este unul dintre formatele acceptate pentru stickere animate. Documentația actuală Apple indică pentru APNG transparență pe 8 biți și suport pentru animație; GIF acceptă animație, dar numai transparență cu o singură culoare.[25]
La 15 martie 2017 a fost adăugat suport APNG în Chromium, iar acesta a ajuns în Chrome 59, lansat în canalul stabil în iunie 2017.[26][27]
În prezent APNG este implementat în principalele motoare și navigatoare web. Specificația W3C îl descrie ca fiind implementat pe scară largă în toate navigatoarele web și tot mai frecvent în vizualizatoare și programe de creare sau editare a imaginilor.[3]
| Domeniu | Program / motor | Suport | Versiune | Dată | Surse | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Procesare imagini | APNG Assembler | Da | v. 2.91 | [28] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cphktool APNG Anime Maker | Da | v. 1 | 9 iunie 2009 | [29] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Restul programelor și platformelor
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Vezi și
[modificare | modificare sursă]Note
[modificare | modificare sursă]- 1 2 3 4 5 6 7 „Portable Network Graphics (PNG) Specification (Third Edition), APNG: frame-based animation” (în engleză). World Wide Web Consortium. . Accesat în .
- 1 2 3 4 „Add APNG support for Mozilla” (în engleză). Mozilla Bugzilla. . Accesat în .
- 1 2 „Portable Network Graphics (PNG) Specification (Third Edition)” (în engleză). World Wide Web Consortium. . Accesat în .
- ↑ „Media type image/apng” (în engleză). World Wide Web Consortium. . Accesat în .
- ↑ Stuart Parmenter; Vladimir Vukicevic (). „APNG 0.4 [DRAFT]” (în engleză). Accesat în .
- ↑ „Bug 18574 - restore support for MNG animation format and JNG image format” (în engleză). Mozilla Bugzilla. Accesat în .
- ↑ „PNG (Portable Network Graphics) Specification, Version 1.1 - Multiple-image extension” (în engleză). libpng.org. Accesat în .
- ↑ „APNG Specification” (în engleză). MozillaWiki. Accesat în .
- ↑ „ImageMagick can't detect animated PNG” (în engleză). GitHub. Accesat în .
- ↑ „VOTE FAILED: APNG 20070405a” (în engleză). SourceForge. . Accesat în .
- ↑ „Discussion for a simple "animated" PNG format” (în engleză). Accesat în .
- 1 2 „Portable Network Graphics (PNG) Specification (Third Edition) publication history” (în engleză). World Wide Web Consortium. Accesat în .
- ↑ „Portable Network Graphics (PNG) Specification (Third Edition) is now a W3C Recommendation” (în engleză). World Wide Web Consortium. . Accesat în .
- ↑ „acTL Animation Control Chunk” (în engleză). World Wide Web Consortium. . Accesat în .
- 1 2 „fcTL Frame Control Chunk” (în engleză). World Wide Web Consortium. . Accesat în .
- 1 2 „fdAT Frame Data Chunk” (în engleză). World Wide Web Consortium. . Accesat în .
- ↑ „Inter-frame Optimization in APNG” (în engleză). Accesat în .
- ↑ „APNG Assembler” (în engleză). SourceForge. Accesat în .
- ↑ „Stickers” (în engleză). Signal Support. Accesat în .
- ↑ „Gran Paradiso Alpha 3 release notes” (în engleză). Mozilla. . Accesat în .
- 1 2 „APNG patch for libpng” (în engleză). SourceForge. Accesat în .
- ↑ „libpng/pngpriv.h, branch libpng18” (în engleză). pnggroup, GitHub. Accesat în .
- 1 2 „Debian Bug #486827 - Iceweasel cannot render APNG image” (în engleză). Debian. . Accesat în .
- ↑ „Digital Audio Broadcasting (DAB); MOT SlideShow; User Application Specification, ETSI TS 101 499 V2.2.1” (PDF) (în engleză). ETSI. Accesat în .
- ↑ „iMessage apps and stickers” (în engleză). Apple Developer. Accesat în .
- 1 2 „Chromium - Add support for Animated PNG” (în engleză). . Accesat în .
- 1 2 „Stable Channel Update for Desktop” (în engleză). Chrome Releases. . Accesat în .
- ↑ „APNG Assembler” (în engleză). SourceForge. Accesat în .
- ↑ „cphktool APNG Anime Maker” (în engleză). Accesat în .
- ↑ „APNG Disassembler” (în engleză). SourceForge. Accesat în .
- ↑ „APNG Optimizer” (în engleză). SourceForge. Accesat în .
- ↑ „Online Help for Chasys Draw IES: File Formats - Other Image Files” (în engleză). Accesat în .
- ↑ „Chasys Draw IES: History” (în engleză). Accesat în .
- ↑ „CLIP STUDIO PAINT Version 1.6.7 release notes” (în engleză). Accesat în .
- ↑ „FFmpeg Formats Documentation - apng” (în engleză). FFmpeg. Accesat în .
- ↑ „FFmpeg Changelog” (în engleză). GitHub. Accesat în .
- ↑ „FireAlpaca Update History” (în engleză). Accesat în .
- ↑ „Animated PNG: Simple Animation with an Alpha Channel” (în engleză). Gamani. Accesat în .
- ↑ „GID (Generic Image Decoder)” (în engleză). GitHub. Accesat în .
- ↑ „GIMP 3.1.2: First Development Release towards GIMP 3.2” (în engleză). GIMP. . Accesat în .
- ↑ „Honeycam - Version history” (în engleză). Bandisoft. Accesat în .
- ↑ „Honeyview - Version history” (în engleză). Bandisoft. Accesat în .
- ↑ „ImageJ News” (în engleză). Accesat în .
- ↑ „ImageMagick - Changelog” (în engleză). ImageMagick. Accesat în .
- ↑ „Imagine - What's new” (în engleză). Accesat în .
- ↑ „History of IrfanView changes/versions” (în engleză). IrfanView. Accesat în .
- ↑ „Konvertor - Solutions for Multimedia Processing” (în engleză). Accesat în .
- ↑ „SAIL ChangeLog” (în engleză). GitHub. Accesat în .
- ↑ „PNG Animations and Images FileType Plugin (.PNG, .APNG)” (în engleză). Paint.NET Forum. Accesat în .
- ↑ „PhotoLine Version History” (în engleză). Accesat în .
- ↑ „More about animated PNG” (în engleză). Accesat în .
- ↑ „VirtualDub APNG Mod” (în engleză). SourceForge. Accesat în .
- ↑ După introducerea suportului APNG, noile versiuni XnView din această ramură au fost publicate pentru Windows.
- ↑ „Sciter” (în engleză). Terra Informatica. Accesat în .
- ↑ „APNG export support” (în engleză). KDE Bugtracking System. Accesat în .
- ↑ „APNG and WEBP animation export” (în engleză). KDE Invent. . Accesat în .
- ↑ „qView releases” (în engleză). GitHub. Accesat în .
- ↑ „Animated PNG graphics” (în engleză). WebKit. . Accesat în .
- ↑ „Add support for Animated PNG” (în engleză). Chromium. Accesat în .
- ↑ „Animated PNG graphics” (în engleză). Mozilla Developer Center. Accesat în .
- ↑ „SeaMonkey 2.0 Release Notes” (în engleză). SeaMonkey Project. Accesat în .
- 1 2 3 4 5 6 7 8 „Animated PNG (APNG)” (în engleză). Can I Use. Accesat în .
- ↑ „Web specifications supported in Opera 9.5” (în engleză). Opera Software. Accesat în .
- ↑ „Opera 46 goes final” (în engleză). Opera Software. . Accesat în .
- ↑ „Implement support for filter import and playback of animated PNG -- APNG” (în engleză). The Document Foundation. Accesat în .
Legături externe
[modificare | modificare sursă]- APNG în PNG Specification (Third Edition), W3C
- Specificația APNG originală, MozillaWiki
- APNG patch for libpng
- Documentație Mozilla istorică privind suportul APNG
- Resurse și programe APNG
- Teste APNG pentru navigatoare
- Animații APNG pentru indicatoare de încărcare
- Fișiere Animated PNG la Wikimedia Commons