라떼군 이야기
APNG 파일 포맷과 관련 안드로이드 라이브러리
Problem
APNG(Animated Portable Network Graphics)
는 이름에서 알 수 있듯이 PNG
포맷을 확장한 이미지 파일 포맷으로 하위 호환성을 유지하면서 GIF
같은 애니메이션 구현이 가능한 포맷이다1. 가장 큰 장점으로 하위 호환성이 유지된다는 것인데 APNG
를 지원하지 않는 뷰어에서는 PNG
처럼 동작하게 된다. 하위 호환성을 유지하는 방법으로 첫번째 프레임은 기존 PNG
정보를 보여주고 나머지 프레임에 애니메이션 프레임들이 이후에 추가되는 형태로 구성된다. MNG(Multiple-image Network Graphics)
보다 하위 호환성을 유지한다는 점과 구현이 더 간단하다.
APNG
는 흔히 카카오톡 등 메신저에서 움직이는 이모티콘 형태로 사용되기 좋은데, 안드로이드 기준으로 APNG
적용하는 방법을 확인해 보고자 한다.
Solution
-
line
의 오픈소스 프로젝트- 주로
kotlin
으로 작성됨 - 비교적 최근까지 관리되는 프로젝트
-
Java
로 작성됨- 최근 관리되지 않음
- 상용 프로젝트에서 사용해보니 NullPointException 등 에러 처리가 부족하여 수정이 필요한 경우가 있음.
만약, 신규 프로젝트라면 ApngDrawable
를 우선적으로 검토할 것 같고 pngj
같은 라이브러리를 이용해 직접 개발을 해보는 것도 좋겠다.