개발 & 코딩 Jul 18, 2026북마크에 추가

한DIY 제작자가 역방향 JPEG 코덱 탐색을 게시했습니다: DCT 양자화를 조작하여 디코딩 시 의도적인 아티팩트가 생성되는 이미지를 만드는 방법입니다. 흥미롭고 유익하며 JPEG 형식 이해에 좋은 연습이 될 것입니다.
이번 주 해커 뉴스 홈페이지에서 「Regressive JPEGs」(maurycyz.com/projects/bad_jpeg/)라는 제목의 글이 우리의 주목을 끌었습니다. 이 글의 저자는 JPEG 코덱을 역으로 탐구한 내용을 문서화했는데요. 이미지의 크기와 품질을 최적화하는 대신, 양자화 테이블과 DCT(이산 코사인 변환) 블록을 조작하여 고의로 열화된 JPEG를 생성합니다.
이것은 생산 도구가 아니라 JPEG이 어떻게 동작하는지, 대부분의 개발자들이 스펙을 한 번도 읽어보지 않고 사용하는 포맷의 내부 작동 원리를 이해하기 위한 훌륭한 구실입니다.
JPEG(Joint Photographic Experts Group, 1992년 ISO/IEC 10918-1 표준)은 다음과 같은 전형적인 파이프라인을 따릅니다:
인식되는 품질은 대부분 5단계에 좌우됩니다. 양자화 테이블이 더 공격적일수록 고주파수 세부 정보가 더 많이 손실됩니다.
저자는 이 메커니즘을 왜곡합니다. 특이한 양자화 테이블(특정 주파수에 매우 높은 값, 다른 곳에는 비정상적으로 낮은 값)을 구성하여 표준 디코더로 읽을 때 다음과 같은 JPEG을 생성합니다:
교육적 가치는 실재합니다. 각 코덱 매개변수가 무엇을 보존하는지 눈으로 확인할 수 있습니다.
호기심의 즐거움 외에도 몇 가지 타당한 용도가 있습니다:
핵심적으로 이 프로젝트 유형은 우리가 블랙박스로 여기는 포맷에도 항상 조작 가능한 레버가 숨겨져 있음을 보여줍니다 - 최상의 결과나 순수한 호기심 모두를 위해.
원래 JPEG 스펙(ITU T.81 / ISO 10918-1)은 장황하지만 읽을 만하며, 이것이 바로 디코더가 실제로 무엇을 보는지 이해하기 위한 최선의 출발점입니다. 도구 측면에서 libjpeg-turbo(Darrell Commander)는 djpeg -verbose를 통해 JPEG 파일의 양자화 테이블을 검사할 수 있게 해줍니다. 이는 코덱이 JPEG에 저장한 내용을 확인할 수 있는 훌륭한 방법입니다.
기억하세요: 파일 포맷은 블랙박스가 아닙니다. JPEG, PNG, WebP 등의 스펙을 조금 읽는 것은 매일 사용하는 이미지 도구의 더 나은 사용자로 만드는 비결입니다.
인공지능이 작성하고 사람의 편집 감독하에 검수한 기사입니다.