2026-07-25
PNG을 JPG로(또는 JPG를 PNG으로) 변환하면 실제로 무슨 일이 일어날까
PNG을 JPG로 바꾸는 건 그냥 확장자만 바뀌는 공짜 작업처럼 보입니다. 실제로는 그렇게 간단하지 않습니다. 두 포맷은 압축 방식 자체가 근본적으로 다르고, 서로 변환하면 파일 크기, 선명한 경계선, 그리고 투명 픽셀의 운명까지 실제로 달라집니다. 각 방향으로 변환할 때 정확히 무슨 일이 일어나는지, 그리고 손실을 최소화하는 방법을 정리했습니다.
두 포맷이 이렇게 다르게 동작하는 이유
JPEG은 손실 압축입니다. 이미지를 8×8 픽셀 블록으로 나누고, 각 블록을 주파수 데이터로 바꾼 뒤, 용량을 줄이기 위해 그 데이터 일부를 버립니다 — 주로 눈에 잘 안 띄는 미세한 고주파 디테일부터입니다. 이건 되돌릴 수 없는 과정입니다. 인코딩 과정에서 한 번 버려진 블록 디테일은 나중에 다시 저장해도 돌아오지 않습니다.
PNG은 무손실입니다. 각 픽셀을 주변 픽셀로부터 예측하고, 그 차이값만 저장한 뒤 ZIP과 같은 계열의 범용 알고리즘인 DEFLATE로 압축합니다. 모든 픽셀이 넣은 그대로 정확히 복원됩니다. 대신 파일이 훨씬 커집니다 — 같은 사진이라도 무손실 포맷은 압축률에서 손실 포맷을 절대 따라갈 수 없습니다.
PNG → JPG: 실제 화질 손실, 그리고 대부분 놓치는 함정
품질을 85~95% 정도로 높게 두고 PNG을 JPG로 바꾸면 일반적인 사진에서는 거의 눈에 띄지 않습니다 — 버려지는 디테일이 원래 눈으로 구분하기 어려운 미세한 질감이기 때문입니다. 품질을 낮게 잡거나, 사진이 아니라 스크린샷이나 선명한 텍스트·단색이 많은 이미지로 시작하면 얘기가 달라집니다 — 경계선 주변에 블록 아티팩트와 링잉이 금방 눈에 띄는데, JPEG의 DCT 연산이 가장 취약한 부분이 바로 이런 딱딱한 경계선입니다.
사실 진짜 함정은 화질이 아니라 투명도입니다. JPEG에는 알파 채널이 아예 없어서, 변환기는 원래 투명했던 자리에 무엇을 채울지 정해야 합니다. NearIMG의 JPG 변환 경로에서는 인코딩 전에 그 자리를 흰색으로 채웁니다. 배경이 투명한 로고나 스티커 PNG는 흐릿해지거나 대충 뭉개지는 게 아니라, 투명했던 자리에 정확히 흰색 사각형이 그대로 박혀 나옵니다. 이건 우회해야 할 버그가 아니라, "JPEG에는 투명도가 없다"는 말이 실제로 부딪혀보면 뜻하는 바입니다.
JPG → PNG: 잃은 걸 되찾아 주지 못하는 이유
반대 방향은 그 시점부터는 무손실입니다 — 딱 그 시점부터만요. PNG은 JPG가 그 순간 가지고 있는 픽셀을 블록 아티팩트까지 포함해서 있는 그대로 저장할 뿐, 앞서 JPEG 인코더가 이미 버린 디테일을 복원해내지는 못합니다. PNG으로 바꾼다고 이전 JPEG이 남긴 손상이 없어지지는 않습니다.
그런데도 사람들이 이 변환을 하는 데는 화질 복구와 무관한 진짜 이유가 있습니다 — PNG만 받는 후속 도구를 써야 하거나, JPG로만 존재하는 사진 위에 투명한 워터마크나 스티커를 얹으려면 알파 채널이 필요하거나. 두 경우 모두 PNG은 이미 벌어진 손상을 고치는 게 아니라, 다음 작업에 맞는 그릇을 골라주는 것뿐입니다.
이 손실이 실제로 문제가 되는 경우
그러데이션과 자연스러운 질감 위주고 선명한 그래픽 경계선이 없는 일반 사진이라면, 적당한 품질의 JPEG은 원본과 구분하기 정말 어렵고 파일 크기 이득은 큽니다. 반면 스크린샷, UI 목업, 라인아트처럼 단색과 또렷한 텍스트가 많은 이미지는 JPEG의 블록 기반 연산과 궁합이 나빠서 품질을 꽤 높게 잡아도 아티팩트가 드러납니다. 그리고 손실은 누적됩니다 — 같은 JPEG 파일을 손실 인코더에 반복해서 저장할 때마다 이전 손실 위에 새로운 양자화가 한 겹씩 더 쌓입니다. 한 번만 변환하는 것과, 일주일 편집하는 동안 JPEG을 다섯 번 왔다 갔다 하는 것은 전혀 다른 얘기입니다.
손실을 최소화하는 법
실제로 효과가 있는 방법들이 있습니다. 여러 번이 아니라 한 번만 변환하세요 — 편집 도중에는 포맷을 정해두고 유지하다가, 마지막에 한 번 내보내는 식으로요. 품질은 가장 낮은 값이 아니라 85~95%처럼 높게 유지하세요 — 95%와 70% 사이의 파일 크기 차이는, 눈에 보이는 아티팩트 차이에 비하면 훨씬 작습니다. 작은 파일 크기와 투명도를 동시에 원한다면 PNG 대신 WebP를 쓰세요 — PNG처럼 알파 채널을 지원하면서 파일 크기는 JPEG에 훨씬 가깝습니다. 그리고 출력 포맷이 PNG라면 품질 슬라이더는 아무 효과가 없다는 것도 알아두세요 — PNG 압축은 정의상 무손실이라 조절할 품질값 자체가 없고, 실제로 품질에 반응하는 건 JPEG과 WebP 출력뿐입니다.