다시 인코딩할 때 남는 것과 버려지는 것
이미지 파일은 픽셀과 그 픽셀에 대한 여러 정보로 이루어져 있습니다. 그 숫자가 어떤 색 공간 기준인지, 알파 채널이 있는지, 카메라가 EXIF에 기록한 모델, 노출, 날짜, 그리고 종종 GPS 좌표까지, GIF, WebP, AVIF라면 프레임이 두 개 이상인지도 포함됩니다. 여기 있는 거의 모든 작업은 파일을 디코딩한 뒤 새 파일을 쓰며, 이 정보들은 각각 다른 운명을 맞습니다.
첫 번째 갈림길은 손실과 무손실입니다. PNG와 BMP는 픽셀을 정확히 저장하므로 백 번 다시 저장해도 아무것도 바뀌지 않습니다. JPG, AVIF, 일반 WebP는 눈이 잘 알아채지 못하는 디테일을 버리며, 버려진 부분은 사라집니다. JPG를 PNG로 변환해도 되살릴 수 없고, 더 이상의 손실을 막을 뿐입니다. 그래서 JPEG를 두 번 저장하면 한 번 저장한 것보다 나빠집니다. 두 번째 인코딩은 이미 양자화된 픽셀을 다시 양자화하고, 그사이에 자르거나 크기를 바꿨다면 새 8×8 블록 격자가 이전 격자와 맞지 않아 오차가 반복되는 게 아니라 쌓입니다. 원본이 남아 있다면 항상 원본으로 작업하세요.
크로마 서브샘플링은 JPG 스크린샷이 이상하게 보이는 구체적인 이유입니다. JPEG는 보통 밝기는 원래 해상도로, 색은 절반 해상도로 저장합니다. 사진에서는 보이지 않지만 빨간 글씨나 가는 색선에서는 확연히 드러납니다. 스크린샷, 로고, 도표라면 PNG나 WebP가 알맞고 JPG는 알맞지 않습니다.
투명한 부분은 어딘가로 가야 합니다. JPG에는 알파 채널이 아예 없으므로, PNG JPG 변환과 AVIF JPG 변환은 투명한 픽셀을 몰래 흰색이나 검은색으로 채우지 않고 어떤 색으로 바꿀지 물어봅니다. PNG, WebP, AVIF는 모두 완전한 알파를 지원하므로 PNG WEBP 변환과 배경 제거로 만든 누끼는 부드러운 가장자리가 그대로 유지됩니다.
EXIF는 남지 않습니다. 다시 인코딩하는 모든 도구(변환, 용량 줄이기, 크기 조절, 회전, 자르기)는 EXIF 블록이 없는 깨끗한 파일을 쓰므로 카메라 모델, 촬영 시각, GPS 위치가 삭제됩니다. 사진을 공개하기 전이라면 바로 원하는 결과입니다. 화면에 영향을 주는 EXIF 정보는 방향 하나뿐인데, 이미지 회전은 실제 픽셀을 옮기는 방식으로 이를 우회하므로, 방향 플래그를 무시하는 뷰어에서도 따르는 뷰어에서도 똑바로 보입니다.
색상 프로필은 옮겨지지 않고 변환됩니다. 브라우저는 Display P3나 Adobe RGB 파일을 화면에 그리기 위해 sRGB로 디코딩하며, 다시 쓴 파일에는 프로필이 포함되지 않습니다. 일반 화면에서는 달라지는 것이 없지만, 광색역 화면에서는 가장 채도가 높은 색이 잘립니다. TIFF JPG 변환도 같은 과정을 거치므로, 스튜디오의 CMYK TIFF는 RGB로 나오며 색을 교정하는 중이라면 인쇄 전처리 소프트웨어에서 작업해야 합니다.
애니메이션은 정지 이미지가 됩니다. 움직이는 GIF, WebP, AVIF 파일은 첫 프레임으로 변환됩니다. GIF PNG 변환에서 보통 원하는 결과가 바로 이것이지만, 12초짜리 반복 영상을 넣기 전에 알아 두면 좋습니다.
브라우저가 정말 알맞지 않은 경우
이 도구들은 파일을 안전하게 지키기 위해 만들어졌고, 그에 따른 대가가 있습니다. 작업 도중에 알게 되기보다 여기서 미리 말씀드리는 편이 낫다고 생각합니다.
아주 큰 이미지. 모든 픽셀이 압축이 풀린 상태로 기기의 메모리에 올라갑니다. 1억 화소 이미지는 다른 작업을 하기도 전에 원시 RGBA로 약 400 MB입니다. 이를 넘어서는 어느 지점에서 탭의 메모리가 부족해지며, 4배 확대는 더 일찍 한계에 닿아 일반 노트북에서 결과물이 약 6000×6000 정도면 한계입니다. 디스크에서 타일 단위로 스트리밍하는 데스크톱 도구에는 이런 제한이 없습니다.
카메라 RAW. CR2, NEF, ARW, DNG 파일은 완성된 사진이 아니라 센서 데이터와 현상 방법이 담긴 파일이며, 여기서는 열 수 없습니다. 먼저 카메라 소프트웨어에서 JPEG나 TIFF로 내보내거나 darktable 또는 RawTherapee를 쓰세요. 둘 다 무료이며, 어떤 웹 페이지보다도 이 작업을 훨씬 잘합니다.
인쇄 색상. 별색, CMYK 분판, ICC 렌더링 의도, 소프트 프루핑은 인쇄 전처리 소프트웨어의 영역입니다. 저희는 브라우저가 그릴 수 있도록 색을 sRGB로 변환할 뿐, 색을 관리하지는 않습니다.
일괄 처리와 자동화. 이 도구들은 사람이 클릭할 때 실행됩니다. 제품 사진 4만 장을 정해진 일정에 따라 크기 조절하는 것은 서버의 명령줄 도구가 할 일이며, 무료 도구도 훌륭합니다. 거의 모든 작업에는 ImageMagick, 아주 큰 파일을 빠르고 적은 메모리로 처리하려면 libvips, 마지막 바이트까지 줄이려면 mozjpeg과 oxipng, 프레임이 있는 것이라면 ffmpeg을 쓰세요.
배경 제거에는 분명한 한계가 있습니다. 40~85 MB를 한 번 다운로드하며, 피사체가 뚜렷하면 머리카락과 털까지 정말 잘 처리하지만, 뚜렷한 피사체 없이 어수선한 장면에서는 정말로 헷갈려 합니다. 로컬 연산을 아무리 늘려도 해결되지 않는 방식 자체의 한계이며, 유료 서비스도 마찬가지입니다.
비슷해 보이는 도구 중 고르기
이미지 용량 줄이기와 이미지 크기 조절. 용량 줄이기는 크기는 그대로 두고 픽셀당 바이트를 줄입니다. 크기 조절은 가로세로 크기를 바꾸므로 픽셀 자체가 줄어듭니다. 4000px 사진을 200 KB로 만들어야 한다면, 먼저 크기를 조절하고 그다음 용량을 줄이는 쪽이 용량 줄이기만 하는 것보다 언제나 낫습니다. 게다가 크기 조절은 중요한 의미에서 무손실입니다. 남는 픽셀은 화질이 떨어지는 것이 아니라 제대로 리샘플링되기 때문입니다.
이미지 크기 조절과 이미지 해상도 높이기. 둘 다 크기를 바꾸지만 서로 반대 방향에 맞춰져 있습니다. 크기 조절은 줄이는 용도로, 줄여도 디테일이 살아남도록 Lanczos 필터를 씁니다. 해상도 높이기는 2배·4배 확대용으로, 확대하면 항상 흐려지므로 이후에 가장자리를 인식하는 선명화 처리를 더합니다. 어느 쪽도 디테일을 만들어 내지는 않습니다. 결과물에 있는 것은 원래 이미지에 있던 것입니다.
ICO 변환과 파비콘 생성기. ICO 변환은 16, 32, 48, 256px 버전을 담은 .ico 파일 하나를 만들며, Windows 애플리케이션이나 바로 가기에 필요한 것이 바로 이것입니다. 파비콘 생성기는 .ico, 개별 PNG, Apple 터치 아이콘, 웹 매니페스트, HTML 태그까지 최신 세트 전체를 ZIP으로 만들며, 웹사이트에 필요한 것이 바로 이것입니다.
PNG WEBP 변환과 JPG AVIF 변환. 둘 다 웹 이미지를 원본보다 작게 만들지만, 알맞은 원본이 다릅니다. WebP는 투명도를 유지하고 순식간에 인코딩되므로 스크린샷, 로고, UI 그래픽에 알맞습니다. AVIF는 사진을 더 강하게 압축해서 보통 같은 화질의 JPG보다 40~60% 작지만, AV1 인코딩은 무거워서 큰 사진 한 장에 몇 초 정도 걸립니다.
이미지 블러 처리와 배경 제거. 블러 처리는 직접 지정한 영역의 정보를 없앱니다. 얼굴, 번호판, 계좌 번호 같은 것입니다. 배경 제거는 피사체와 배경을 분리하고 배경을 완전히 삭제합니다. 목적이 누끼가 아니라 가리기라면 블러 처리를 쓰고, 텍스트에는 굵은 모자이크를 쓰세요. 약한 모자이크는 공개된 연구에서 복원된 사례가 있습니다.