APNG
1. 개요
APNG(Animated Portable Network Graphics)는 2004년 모질라 코퍼레이션에서 개발한 애니메이션 이미지 형식이다. PNG 파일 형식을 기반으로 하며, 여러 프레임을 포함하여 애니메이션을 구현한다. APNG는 하위 호환성을 갖춰 APNG를 지원하지 않는 응용 프로그램에서는 첫 번째 프레임만 표시된다. APNG는 GIF와 비교하여 더 나은 압축과 투명도, 24비트 색상을 지원하며, 다양한 이미지 처리 프로그램과 웹 브라우저에서 지원된다.
이미지 준비중입니다.
| 파일 확장자 | .png, .apng |
|---|---|
| MIME 형식 | image/png, image/apng |
| 소유자 | 모질라 재단 (World Wide Web Consortium|W3C]]에서 채택) |
| 종류 | 애니메이션 래스터 이미지 |
| 확장 대상 | PNG |
| 개방 여부 | 예 |
| 영어 명칭 | Animated Portable Network Graphics |
|---|
| 매직 넘버 | 89 'PNG' 0d 0a 1a 0a |
|---|---|
| 장르 | 동영상 |
| 포함 가능한 것 | 동영상, 텍스트 |
| 소유자 | [[Mozilla Corporation]]영어 |
| 확장 대상 | PNG |
-
모질라 -
모질라 재단
모질라 재단은 넷스케이프 사업부 축소 후 모질라 프로젝트의 독립 운영을 위해 2003년 설립된 비영리 단체로, 파이어폭스 개발 지원, 개방형 웹 생태계 유지, 그리고 인터넷 자유 수호를 위한 활동을 전개한다. -
모질라 -
모질라 차이나
모질라 차이나는 한국에서의 역사와 관련된 주제를 다루며, 특정 시대별 주요 사건 및 변화, 쟁점, 사회적 영향, 관련 인물 및 단체, 그리고 미래에 대한 내용을 포함한다. -
그래픽 파일 포맷 -
JPEG
JPEG은 정지 화상의 디지털 압축 및 코딩을 위한 국제 표준이자 이를 만든 위원회의 이름으로, 1992년 최초 표준 발표 이후 웹 환경에서 널리 사용되는 이미지 형식이 되었다. -
그래픽 파일 포맷 -
BMP 파일 포맷
BMP 파일 포맷은 마이크로소프트에서 정의한 다양한 색상 깊이를 가진 컬러 비트맵 표현 방식으로, 장치 독립 비트맵이라고도 불리며, BMP 헤더, 비트맵 정보, 색 팔레트, 비트맵 데이터 등으로 구성되어 높은 호환성을 가지지만 압축을 거의 하지 않아 파일 크기가 큰 편이다. -
오픈 포맷 -
HTML
HTML은 웹 페이지 제작을 위한 표준 마크업 언어로서, 팀 버너스리가 제안하고 구현한 후 인터넷 발전과 함께 널리 사용되며, SGML에 기반하여 하이퍼텍스트 기능으로 다양한 콘텐츠를 표현하고 연결하며, W3C와 WHATWG에서 표준화를 진행하고 최신 버전은 HTML Living Standard이다. -
오픈 포맷 -
오픈 소스
오픈 소스는 제품 설계 및 재배포를 장려하는 모델로, 소프트웨어 개발에서 시작하여 개방형 협업을 장려하며 다양한 분야에서 활용되고 있고 오픈 소스 이니셔티브와 같은 단체가 운동을 지원한다.
2. 역사
APNG 사양은 모질라 코퍼레이션의 스튜어트 파먼터와 블라디미르 부키체비치(Vladimir Vukićević)가 스로버(Throbber)와 같은 인터페이스에 필요한 애니메이션을 저장할 수 있게 하기 위해 2004년에 만들었다. 2003년 5월, 모질라는 APNG 기능의 상위 집합을 제공하는 MNG 애니메이션에 대한 지원을 중단했는데, 이는 광범위한 MNG 디코더 라이브러리(300KB)에 필요한 큰 파일 크기에 대한 우려 때문이었다. PNG 디코더를 기반으로 구축된 APNG 디코더는 훨씬 작은 구성 요소였다.
PNG 및 MNG 형식의 사용자 및 관리자 사이에서 APNG는 미온적인 반응을 얻었다. 특히 PNG는 단일 이미지 형식으로 구상되었다. APNG는 APNG를 인식하지 못하는 애플리케이션이 무시하도록 PNG 보조 청크에 후속 프레임을 숨기지만, 애니메이션 이미지와 비 애니메이션 이미지를 구분할 수 있도록 소프트웨어에 대한 형식 변경은 없었다. 글렌 랜더스-페르손(Glenn Randers-Pehrson)은 APNG 형식 변경을 권고하고 고유한 MIME 유형(예: video/png)을 사용할 것을 제안했으나, APNG 지지자들은 다른 MIME 유형(image/apng)을 추가하고, '.png' 확장자 대신 '.apng' 확장자를 사용할 것을 주장하여 PNG 개발 그룹에서 해당 형식을 승인하지 않았다.
PNG 개발 그룹은 2007년 4월 20일에 APNG를 공식 확장으로 거부했다. 2021년 9월 14일부터 PNG 워킹 그룹은 월드 와이드 웹 컨소시엄(W3C)의 지침에 따라 PNG 사양을 유지 관리하고 개발했으며, PNG 사양(세 번째 에디션)의 첫 번째 공개 작업 초안은 2022년 10월 25일에 게시되어 APNG 확장을 핵심 PNG 사양에 추가했다. 후보 추천은 2023년 9월 21일에 게시되었다.
3. 기술적 상세 내용
APNG는 2004년 모질라 재단의 스튜어트 파먼터(Stuart Parmenter)와 블라디미르 부키체비치(Vladimir Vukićević)가 스로버(throbber)와 같은 인터페이스에 필요한 애니메이션을 저장하기 위해 만들었다.
APNG 명세는 PNG 파일 포맷을 따르며, PNG 파일은 PNG 시그너처(8개의 특수 바이트)와 일련의 청크들로 구성된다. 각 청크는 길이(4바이트), 청크 유형(4바이트), 청크 데이터(길이 바이트), CRC(4바이트)의 네 부분으로 구성된다.
| 길이 (4 바이트) | 청크 유형 (4 바이트) | 청크 데이터 (길이 바이트) | CRC (4 바이트) |
최소한의 PNG 파일은 그림 헤더(IHDR), 그림 데이터(IDAT), 그림 끝부분(IEND)의 세 가지 청크로 구성된다.
89 50 4E 47 0D 0A 1A 0APNG 시그너처 | IHDR그림 헤더 | IDAT그림 데이터 | IEND그림 끝부분 |
다음 그래픽은 하나의 빨간 화소만을 표현하는 최소한의 PNG 파일 내용을 보여준다. 왼쪽은 16진 형식, 오른쪽은 ISO-8859-1 문자(인식 불가능 문자는 점)를 나타낸다.
| 16진 | 문자 |
|---|---|
APNG는 PNG의 확장으로, 애니메이션을 지원하기 위해 세 개의 새로운 보조 청크(acTL, fcTL, fdAT)를 도입했다.
GIF와 비교했을 때, APNG는 풀 컬러 이미지와 알파 채널을 지원하여 배경과 자연스럽게 합성되는 표현이 가능하다. 또한, APNG는 Deflate 압축을 사용하므로, Lempel–Ziv–Welch(LZW) 압축을 사용하는 GIF보다 압축 효율이 좋아, 애니메이션 GIF를 APNG로 변환하면 파일 크기를 줄일 수 있는 경우가 많다.
3.1. APNG의 청크 구조
APNG는 PNG 파일 포맷을 따르며, 애니메이션 구현을 위해 다음 세 가지 보조 청크를 도입한다:
* 애니메이션 제어 청크 (acTL): 기본 이미지의 IDAT 청크 앞에 위치한다. 이 파일이 애니메이션 PNG 파일임을 나타내는 일종의 "마커" 역할을 하며, 전체 프레임 수와 애니메이션 반복 횟수(0은 무한 반복)를 포함한다.
* 프레임 제어 청크 (fcTL): 각 프레임의 이미지 데이터 앞에 위치하며, 해당 프레임의 메타데이터(크기, 위치(기본 이미지 기준), 지속 시간, 표시 후 처리 방법(검은색으로 지울지, 이전 프레임으로 대체할지, 다음 프레임으로 덮어쓸지), 투명도 적용 여부 등)를 담고 있다.
* 프레임 데이터 청크 (fdAT): 각 프레임의 이미지 데이터를 저장한다. 시퀀스 번호로 시작하며, 기본 이미지의 IDAT 청크와 동일한 구조를 갖는다.
프레임 제어 청크(fcTL)와 프레임 데이터 청크(fdAT)는 공통된 시퀀스 번호를 따른다. 따라서 APNG를 인식하지 못하는 PNG 편집기가 PNG 청크 정렬 규칙에 따라 프레임을 재정렬하더라도, 프레임 순서와 타이밍을 복원할 수 있다.
각 프레임은 기본 이미지와 동일한 비트 심도, 색상 유형, 압축 방식, 필터 방식, 인터레이스 방식 및 팔레트(있는 경우)를 사용한다.
3.2. 하위 호환성
PNG 파일을 읽는 응용 프로그램은 이해하지 못하는 청크를 무시하도록 설계되었기 때문에, APNG는 하위 호환된다. APNG 확장을 지원하지 않는 응용 프로그램은 첫 번째 프레임만 표시하고 추가 애니메이션 프레임은 무시한다.
--
APNG 형식은 첫 번째 프레임이 기존 PNG와 동일한 영역에 저장된다. 따라서 APNG 형식을 지원하지 않는 디코더를 탑재한 소프트웨어에서도 첫 번째 프레임이 이미지로 표시된다. 프레임의 속도 정보나 두 번째 이후의 애니메이션 프레임은 새롭게 확장된 영역에 저장되지만, 이러한 영역은 APNG를 지원하지 않는 디코더에서는 무시된다. 또한, 첫 번째 프레임을 애니메이션에 사용할지 설정할 수 있으므로, 비대응 환경에서의 대체 표시용 이미지로도 사용할 수 있다.
3.3. 압축 및 최적화
APNG는 프레임 간 최적화, 알파 블렌드 및 알파 디스포즈 연산, 전체 크기보다 작은 서브 프레임, 지저분한 투명도, 색상 유형 및 색상 팔레트 최적화, zlib, 7-Zip, Zopfli 등 다양한 압축 옵션을 활용하여 파일 크기를 최대한 작게 만든다.
4. GIF와의 비교
APNG는 GIF와 비교하여 다음과 같은 장단점을 갖는다.
| 장점 | 단점 |
|---|---|
--
풀 컬러 지원으로 인해 프레임마다 개별 팔레트(로컬 팔레트)를 갖는 개념이 폐지되고 공통 팔레트(글로벌 팔레트)만 남게 되었다.
5. 응용 프로그램 지원
APNG는 다양한 이미지 처리 프로그램과 웹 브라우저에서 지원되거나, 플러그인을 통해 지원을 추가할 수 있다.
어도비 포토샵에서는 지원되지 않지만, 김프와 페인트 닷 넷은 플러그인을 통해 APNG를 지원한다. cphktool APNG Anime Maker, 파이어알파카, ImageJ 등의 프로그램도 APNG 형식을 지원한다. IrfanView와 XnView는 읽기 전용으로 APNG 파일을 열 수 있다.
웹 브라우저의 경우, 인터넷 익스플로러에서는 지원되지 않지만, 모질라 파이어폭스, 시몽키, 사파리, 오페라, 구글 크롬/크로미움 등 많은 브라우저가 APNG를 지원한다.
모바일 환경에서는 iOS의 사파리 8 이상, 안드로이드의 파이어폭스 및 크롬 버전 59 이상에서 APNG를 지원하며, 오페라 모바일과 윈도 모바일에서도 지원된다.
5.1. 이미지 처리 프로그램
5.2. 웹 브라우저
* 게코 기반 웹 브라우저
모질라 파이어폭스: 2007년 3월 23일에 버전 3 트렁크 빌드에 APNG 지원을 추가했고, 2008년 6월 17일에 출시된 버전 3.0부터 지원한다.
시몽키
아이스위즐 등: 비공식 libpng 변형을 사용하여 APNG를 지원한다.
* 사파리: 2014년 10월 16일에 출시된 버전 8부터 지원한다.
* 오페라
프레스토 엔진 기반: 지원
Blink 엔진 기반: 2017년 6월 22일에 출시된 버전 46부터 지원한다.
* 구글 크롬/크로미움: 2017년 3월 15일에 크로미움에 APNG 지원이 추가되었고, 버전 59부터 자체 지원한다.
* 마이크로소프트 엣지
Blink 엔진 기반: 2020년 1월 15일에 출시된 버전 79부터 지원한다.
* 인터넷 익스플로러: 지원되지 않는다.
5.3. 모바일 환경
* iOS (사파리 8 이상에서 지원)
* 안드로이드 (안드로이드용 파이어폭스, 크롬 버전 59 이상으로 가능, 앱에서는 불가)
* 오페라 모바일 / 윈도 모바일
6. 파생 형식
시그널의 애니메이션 스티커는 APNG 형식이지만 몇 가지 제한 사항이 있다. 파일 크기는 300KB, 애니메이션 길이는 3초, 해상도는 512x512 픽셀로 제한된다(이 마지막 사항은 불분명함).