▲GN⁺ 10달전 | parent | ★ favorite | on: 새로운 PNG 스펙 릴리즈 (programmax.net)Hacker News 의견 저자임을 밝힘과 동시에 질문이 있으면 언제든 환영임을 알림 이번 PNG는 완전히 새로운 포맷이 아니라 기존 포맷의 업데이트 버전임을 강조 매우 높은 하위 호환성을 제공함을 밝힘 오래된 프로그램들도 새로운 PNG 파일을 최대한 잘 읽을 수 있고, 예를 들어 빨간 사과 사진이란 점은 그대로 인식 가능함을 설명 PNG 내부 작동 방식에 혼동이 있을 수 있어 핵심을 정리함 PNG 파일은 다양한 데이터 청크(chunks)로 구성됨 각 청크는 이름을 갖고 있어 프로그램이 모르거나 필요 없는 청크는 그냥 건너뛸 수 있음 이미지 스트림은 단 하나만 존재함을 명시 새로운 PNG 스펙의 기능을 활용한 예시 파일이 있는지, 특히 애니메이션이나 HDR 이미지를 직접 다운로드해서 프로그램 호환성을 테스트해 볼 수 있는 데모 페이지가 있으면 좋겠다는 바람을 이야기함 나는 메타포맷과 범용 툴링을 지지함을 밝힘 Office Open XML이나 ePub처럼 단지 zip과 XML 라이브러리만 있으면 파싱이 되는 구조를 예로 듦 PNG도 거의 Interchange File Format(이하 IFF)과 유사한 구조를 가지고 있지만, 기존에는 미묘하게 규격이 달라 완전히 범용 IFF 파서로 PNG와 IFF 계열 파일을 동시에 파싱하는 게 불가능했음을 경험에서 설명 IFF는 쉽게 구현할 수 있고 데이터 압축에 강점이 있지만, 지금껏 구식 게임 데이터, AIFF·RIFF 오디오 등 제한된 용도로만 쓰여왔고, 범용 툴링이 만들어지지 않은 이유 가운데 하나로 PNG와 IFF의 호환성 아쉬움을 지적 PNGv3는 PNG 파일이 공식적으로 IFF 파일이 된다면, PNG의 대중성을 발판으로 범용 IFF 생태계(예: libiff 같은)가 확장되고 새로운 포맷 정의에도 쓸 수 있을 거란 바람을 밝힘 실제 PNG/IFF 파서를 직접 만들어 봤고, 단순히 PNG를 수정해서 IFF 호환성을 갖추기는 어렵고, 하위 호환성(특히 하드웨어 파서)도 유지해야 함을 언급하면서 나는 PNG가 사용하고 있는 변형된 IFF 구조를, 새로운 메타포맷(IFF 2.0) 표준으로 별도 문서화할 것을 제안 IFF 2.0은 PNGv2가 호환되는 프로필, AIFF/RIFF 등 IFFv1도 커버하는 프로필을 공식화해 범용 IFF 툴링을 추진하길 바람 나아가 새로운 그린필드 프로필(최신 환경에 맞춘 신포맷)에선, 예를 들어 CRC 대신 현대적 해시로 무결성 체크, 청크 이름 문자세트 확장, 각 청크 속성정보를 효율적으로 담는 구조를 도입할 수도 있음 이런 구조들은 IFFv1과 PNGv2를 모두 변환(transcode) 가능하도록 하고, 실제 HTML5에서 HTML4와 XHTML을 조합·호환하는 식의 전략적 프로필 선언이 바람직하다고 봄 결론적으로, 세부 사항보다 디자인 목표(기존과 새 포맷 간 이질성 최소화 및 도구 생태계 확장)에 중점을 뒀음을 강조함 내 웹 기반 드로잉 툴에서는 문서의 JSON 표현을 PNG의 주석 필드에 저장하는 트릭을 씀 이렇게 하면 저장한 파일이 바로 이미지로도 쓸 수 있고, 다시 에디터에 불러올 수도 있음 다운로드 폴더에 알아보기 힘든 JSON 파일이 쌓이지 않는 장점이 있음 재미있긴 한데, 사용자가 왜 파일이 .png로 저장되는지, 또는 Paint 등에서 열었다 저장하면 왜 데이터가 사라지는지 설명하기가 애매함 Krita도 붓 설정을 이렇게 저장하는데, 데이터가 너무 많을 때 예상치 못한 문제를 일으킬 수 있음 관련 이슈: Krita-Brushes 이슈 #4, Memileo Impasto Brushes 대화 Macromedia Fireworks는 20년 전부터 PNG를 기본 저장 포맷으로 사용했었음 물론 그때는 JSON을 넣었던 건 아님 많은 AI 이미지 생성 프론트엔드도 비슷하게 사용함 이미지 주석(comment)에 프롬프트나 세팅을 저장해서, 이미지만 열어도 설정을 가져오거나 ComfyUI처럼 전체 워크플로우를 불러오는 식임 사실 이미지 다루는 툴들은 이런 방식이 꽤 보편적으로 쓰인다고 생각함 Macromedia Fireworks는 PNG에 Fireworks 파일을 저장했고, Adobe의 Illustrator(AI) 파일은 실제로는 PDF이고, Photoshop의 PSD 파일도 TIFF 내부에 저장 가능함 이 때문에 Photoshop에서는 여러 레이어가 보이지만, 다른 소프트웨어에서는 한 레이어만 나오는 현상이 있음 이 스펙은 이미 널리 구현된 것에 대한 명시화에 가까움 차세대 PNG라 해도 새로운 디코더가 필요하다면 PNG2라고 했어도 됐을 것 같음 JPEG-XL은 이미 대부분이 원하는 무손실 코덱의 조건을 충족함 문제는 인코딩/디코딩 속도와 자원임 현재 무손실 이미지 코덱의 최고는 HALIC임 자세한 논의: HN HALIC 토론 HALIC 토론 스레드를 보면 실제로는 LEA 0.5가 더 우수하다고 함 이미지 무손실 압축 벤치마크에서 HALIC은 최상위권이 아님 솔직히 말해 JPEG XL을 한동안 "초대형 이미지" 용도로만 쓰는 줄 알고 무시했었음 나는 컴퓨터 비전 이미지 어노테이션 툴(XLabel)에서 png를 사용함 클래스 레이블을 이미지 메타데이터에 직접 저장해 텍스트 파일을 따로 두지 않아도 됨 앞으로 이런 용도에 맞는 확장 포맷을 만들고 싶음 WebP의 무손실 압축은 업계 최고 수준이면서도 널리 쓰이지 않음 무손실 압축에서 최고 성능을 내는 것 자체가 중요한 게 아니라, 오히려 생태계 채택이 더 큰 과제임을 시사함 인코딩/디코딩 속도 문제는 시간이 지나면 개선될 수 있음 이는 과거 jpg 생태계에서 실제로 일어난 변화임 공식적으로 Exif 데이터 지원이 반영된 점이 최고의 소식임 이전에도 헤더에 커스텀 데이터를 쓸 수 있었지만, Exif 지원은 매우 환영임 참고로 Exif에 자이로스코프(회전)나 가속도(중력) 관련 필드가 있는지 궁금함 구글 카메라 앱으로 찍은 사진에 이런 정보가 빠져있어서, 이후 자동 보정이나 파노라마 합성 때 아쉬운 경우가 많았음 가속도 필드(Exif.Photo.Acceleration)와 고도를 위한 필드(Exif.Photo.CameraElevationAngle)는 있지만, 3축 전부를 지원하지 않음 환경 센서(주변 조건)는 있지만, 스펙 작성자들이 지정한 특정 항목만 반영됨 Exif.Photo.MakerNote는 제작사에서 원하는 정보를 저장하는 자유로운 영역으로, 9축 데이터를 기록해도 충분할 정도로 크기 제한이 큼 Exif는 이미지 렌더링에서 회전 처리 방식에 따라 혼선을 불러올 수 있음 구버전과 신버전 디코더가 Exif 회전 유무에 따라 서로 다르게 이미지를 보여줄 수 있음 Exif 회전에 대한 구체적인 디코더 권장사항이 없다 보니, 이중 회전(예: 데스크탑 환경과 라이브러리가 각자 처리) 같은 버그도 빈번히 발생함 "디코더가 Exif 데이터의 신뢰 여부를 별개로 알지 못하면, Exif 데이터는 기록적 가치로만 간주해야 한다"는 애매한 권장문구만 있을 뿐 완전한 하위 호환을 위해선 "절대로 회전하지 마라" 같은 명확한 지침이 필요하다고 생각함 카메라의 가속도계나 관성항법장치 데이터를 기록하는 표준 필드는 없음 Exif 필드 목록: exiv2 공식 태그 설명 실제로 많은 웹사이트가 Exif 데이터 대부분을 업로드 시 삭제함 일부 필드는 개인정보나 위치추적에 악용될 소지가 있기 때문임 개인적으로는 사람들이 Exif 대신 XMP를 쓰기를 바람 Exif는 구조가 이상하고 본질적으로 TIFF 이미지를 PNG 내에 박아넣는 꼴임 이번 PNG 스펙은 이미 널리 통용되는 방식을 공식적으로 명문화함 최고의 코덱은 어디서나, 어떤 앱이든, OS 쉘이나 API, Linux 등에서도 작동해야 함 HEIC나 AV1 같은 포맷은 OS 단의 지원이 없으면 파일을 미리 보기조차 힘듦 제대로 통용되지 않는 포맷은 플랫폼 기본값이 되어선 안 됨 나는 여러 이미지 포맷, 특히 특정 분야에서만 쓰는 희귀 포맷까지 다루는 업무를 함 다양한 포맷을 정말 지원하는 건 매우 큰 도전임 라이브러리도 표면적으로는 jpg/tif/heic 지원이라 써 있지만, 가령 30GB짜리 jpeg나 모든 메타데이터 지원까지 문제없이 되느냐 하면 그렇지 않음 이 새로운 스펙은 오히려 HEIC이나 AV1보다 더 혼란스러울 수 있음 PNG 안에 어떤 코덱이 들어있는지 파일을 열어보기 전엔 전혀 알 수 없음 지금까지 HDR이 명확하게 밝기·명암 범위(contrast ratio) 확장 의미가 아닌, "더 넓은 색 공간"의 의미로 사용된 걸 처음 봄 너무 늦었는지 의문임 그리고 JPEG XL은 이미 모든 기능(손실/무손실 압축, 애니메이션, HDR, Exif 등)과 고급 압축 기술(유한 상태 기호 엔트로피, ZStandard 등)을 제공 중 별도의 PNG 업데이트는 필요 없고 그냥 JPEG XL을 쓰면 된다고 생각함 "그냥 채택하면 된다"는 게 안 되는 현실 JPEG XL 브라우저 지원 현황: 5년이 지났지만 지원하는 브라우저가 한 곳뿐임 브라우저 공급업체가 구현하지 않으면 개발자나 유저가 새 포맷을 쓸 수 없는 것이 현실임 "고급 압축기법(ZStandard 등)" 언급에 대하여 ZStandard는 일정한 변화폭을 가진 숫자(예: 그라데이션)를 압축하는 데는 오히려 좋지 않을 수 있음 Bzip2는 이 방면에서 더 낫고, 예시처럼 두 변수(내부, 외부 반복)가 컬러 채널에 대응할 때 더 적합함 현실 데이터는 노이즈 때문에 단순하지 않지만, 이런 알고리즘 비교는 여전히 실제와 차이가 있음 참고: 관련 Mastodon 토론 "PNG 업데이트 필요 없다, JPEG XL만 채택하면 된다" 그럴 거면 구글에 얘기해야 함 실제로 구글이 Chrome에서 JPEG XL 지원을 포기했고(관련 이슈), 이로 인해 생태계 확장이 막혀버림 왜 또 다른 표준(파생형)을 만드는지 이해 못하겠음 이미 충분히 혼란스러운데, 독특한 판매 포인트도 없는 새로운 표준만 계속 늘어남을 한탄함 이제 GIF를 APNG(알파 블렌딩 + 투명 배경 + 무손실 압축)로 대체할 수 있게 되어 2000년대 웹 감성이 다시 살아날 수 있음 Animated SVG도 표준이 있는지 궁금함 예전에 자바스크립트 기반 SVG 애니메이션(챗봇 아바타 같이)을 본 적 있는데, 표준 프레임워크가 있는지 잘 모르겠음 Animated SVG는 존재함 주요 SVG 애니메이션 요소: set, animate, animateTransform, animateMotion 자세한 설명: SVG 애니메이션 관련 자료 요즘 GIF 대신 음성 없는 동영상(예: mp4)이 더 잘 압축돼 많이 쓰이는 걸로 알고 있음 Animated PNG가 AV1 등 동영상 포맷에 비해 경쟁력이 있는지 궁금함 GIF 업로드를 지원하는 대부분의 서비스에서 APNG나 animated WEBP 지원은 거의 전무함 백엔드 지원이 사실상 0에 가까워 매우 답답함 짧은 영상을 애니메이션 그래픽으로 변환하면, WEBP가 APNG보다 원래 더 좋았음 GIF를 중간 포맷으로 쓰면 그나마 APNG가 경쟁력이 있음 요즘은 AVIF가 최고의 선택임 몇 년 전엔 Lottie(Bodymovin) 라이브러리 사용 경험이 있음 Adobe After Effects에서 애니메이션을 만들고, svg와 json으로 내보낸 후 lottie JS로 웹에서 쉽게 애니메이션 적용 벡터 웹 애니메이션에서 제대로 된 도구나 DX(개발 경험)가 부족하다고 느꼈음 animated PNG 쪽 도구 및 DX 정보도 궁금 PR에서 "많은 프로그램이 새로운 PNG 스펙을 이미 지원한다"는 주장 중 Photoshop이 APNG를 지원한다는 언급은 잘못됨 APNG 인식이 What's new의 두 번째 항목임에도 불구하고 실제론 Photoshop에서 지원하지 않아 실망스러웠음 Photoshop은 HDR 부분은 지원하지만, APNG 부분은 지원하지 않음 누군가 사람들이 시간/날짜 불확실성을 소프트웨어적으로 일치시켜 관리해야 한다고 언급 "사진은 2025년 스캔, 내용은 부활절 무렵, 1920~1940년 사이" 같은 모호한 시간 정보 관리 필요성 EXIF에는 DateTimeDigitized 필드가 있음 애매한 날짜 표기에 대해선 EDTF 스펙이 존재 참고: EXIF 필드 설명, EDTF 스펙 공식문서 구글 포토와 애플 포토에서 직접 날짜를 지정할 수 있지만, 실제로 EXIF에는 저장하지 않음 플랫폼 이동시, EXIF가 없는 이미지들은 날짜 정보도 같이 사라지는 문제가 발생함
Hacker News 의견
저자임을 밝힘과 동시에 질문이 있으면 언제든 환영임을 알림
이번 PNG는 완전히 새로운 포맷이 아니라 기존 포맷의 업데이트 버전임을 강조
매우 높은 하위 호환성을 제공함을 밝힘
오래된 프로그램들도 새로운 PNG 파일을 최대한 잘 읽을 수 있고, 예를 들어 빨간 사과 사진이란 점은 그대로 인식 가능함을 설명
PNG 내부 작동 방식에 혼동이 있을 수 있어 핵심을 정리함
새로운 PNG 스펙의 기능을 활용한 예시 파일이 있는지, 특히 애니메이션이나 HDR 이미지를 직접 다운로드해서 프로그램 호환성을 테스트해 볼 수 있는 데모 페이지가 있으면 좋겠다는 바람을 이야기함
나는 메타포맷과 범용 툴링을 지지함을 밝힘
내 웹 기반 드로잉 툴에서는 문서의 JSON 표현을 PNG의 주석 필드에 저장하는 트릭을 씀
이렇게 하면 저장한 파일이 바로 이미지로도 쓸 수 있고, 다시 에디터에 불러올 수도 있음
다운로드 폴더에 알아보기 힘든 JSON 파일이 쌓이지 않는 장점이 있음
재미있긴 한데, 사용자가 왜 파일이 .png로 저장되는지, 또는 Paint 등에서 열었다 저장하면 왜 데이터가 사라지는지 설명하기가 애매함
Krita도 붓 설정을 이렇게 저장하는데, 데이터가 너무 많을 때 예상치 못한 문제를 일으킬 수 있음
Macromedia Fireworks는 20년 전부터 PNG를 기본 저장 포맷으로 사용했었음
많은 AI 이미지 생성 프론트엔드도 비슷하게 사용함
Macromedia Fireworks는 PNG에 Fireworks 파일을 저장했고,
이 스펙은 이미 널리 구현된 것에 대한 명시화에 가까움
차세대 PNG라 해도 새로운 디코더가 필요하다면 PNG2라고 했어도 됐을 것 같음
JPEG-XL은 이미 대부분이 원하는 무손실 코덱의 조건을 충족함
현재 무손실 이미지 코덱의 최고는 HALIC임
HALIC 토론 스레드를 보면 실제로는 LEA 0.5가 더 우수하다고 함
솔직히 말해 JPEG XL을 한동안 "초대형 이미지" 용도로만 쓰는 줄 알고 무시했었음
나는 컴퓨터 비전 이미지 어노테이션 툴(XLabel)에서 png를 사용함
WebP의 무손실 압축은 업계 최고 수준이면서도 널리 쓰이지 않음
인코딩/디코딩 속도 문제는 시간이 지나면 개선될 수 있음
공식적으로 Exif 데이터 지원이 반영된 점이 최고의 소식임
이전에도 헤더에 커스텀 데이터를 쓸 수 있었지만, Exif 지원은 매우 환영임
참고로 Exif에 자이로스코프(회전)나 가속도(중력) 관련 필드가 있는지 궁금함
가속도 필드(Exif.Photo.Acceleration)와 고도를 위한 필드(Exif.Photo.CameraElevationAngle)는 있지만, 3축 전부를 지원하지 않음
Exif는 이미지 렌더링에서 회전 처리 방식에 따라 혼선을 불러올 수 있음
카메라의 가속도계나 관성항법장치 데이터를 기록하는 표준 필드는 없음
실제로 많은 웹사이트가 Exif 데이터 대부분을 업로드 시 삭제함
개인적으로는 사람들이 Exif 대신 XMP를 쓰기를 바람
이번 PNG 스펙은 이미 널리 통용되는 방식을 공식적으로 명문화함
최고의 코덱은 어디서나, 어떤 앱이든, OS 쉘이나 API, Linux 등에서도 작동해야 함
HEIC나 AV1 같은 포맷은 OS 단의 지원이 없으면 파일을 미리 보기조차 힘듦
제대로 통용되지 않는 포맷은 플랫폼 기본값이 되어선 안 됨
나는 여러 이미지 포맷, 특히 특정 분야에서만 쓰는 희귀 포맷까지 다루는 업무를 함
이 새로운 스펙은 오히려 HEIC이나 AV1보다 더 혼란스러울 수 있음
지금까지 HDR이 명확하게 밝기·명암 범위(contrast ratio) 확장 의미가 아닌, "더 넓은 색 공간"의 의미로 사용된 걸 처음 봄
너무 늦었는지 의문임
그리고 JPEG XL은 이미 모든 기능(손실/무손실 압축, 애니메이션, HDR, Exif 등)과 고급 압축 기술(유한 상태 기호 엔트로피, ZStandard 등)을 제공 중
별도의 PNG 업데이트는 필요 없고 그냥 JPEG XL을 쓰면 된다고 생각함
"그냥 채택하면 된다"는 게 안 되는 현실
"고급 압축기법(ZStandard 등)" 언급에 대하여
"PNG 업데이트 필요 없다, JPEG XL만 채택하면 된다"
왜 또 다른 표준(파생형)을 만드는지 이해 못하겠음
이제 GIF를 APNG(알파 블렌딩 + 투명 배경 + 무손실 압축)로 대체할 수 있게 되어 2000년대 웹 감성이 다시 살아날 수 있음
Animated SVG도 표준이 있는지 궁금함
Animated SVG는 존재함
요즘 GIF 대신 음성 없는 동영상(예: mp4)이 더 잘 압축돼 많이 쓰이는 걸로 알고 있음
GIF 업로드를 지원하는 대부분의 서비스에서 APNG나 animated WEBP 지원은 거의 전무함
짧은 영상을 애니메이션 그래픽으로 변환하면, WEBP가 APNG보다 원래 더 좋았음
몇 년 전엔 Lottie(Bodymovin) 라이브러리 사용 경험이 있음
PR에서 "많은 프로그램이 새로운 PNG 스펙을 이미 지원한다"는 주장 중
Photoshop이 APNG를 지원한다는 언급은 잘못됨
Photoshop은 HDR 부분은 지원하지만, APNG 부분은 지원하지 않음
누군가 사람들이 시간/날짜 불확실성을 소프트웨어적으로 일치시켜 관리해야 한다고 언급
"사진은 2025년 스캔, 내용은 부활절 무렵, 1920~1940년 사이" 같은 모호한 시간 정보 관리 필요성
EXIF에는 DateTimeDigitized 필드가 있음
구글 포토와 애플 포토에서 직접 날짜를 지정할 수 있지만, 실제로 EXIF에는 저장하지 않음