이미지가 PNG여야 한다고 해서, 파일 이름 끝의 .jpg를 지우고 .png로 바꿔 본 적 있으신가요. 겉보기엔 아이콘도 바뀌고 그럴듯해 보입니다.
그런데 어떤 사이트에 올리면 "형식이 맞지 않는다"며 거부당하기도 합니다. 이름만 바꾼 파일이 정말 PNG가 된 건지, 파일 속을 직접 열어 확인해 봤습니다.

파일의 진짜 정체는 이름이 아니라 속에 있습니다
모든 파일은 맨 앞에 자기가 무슨 형식인지 알려주는 표시를 담고 있습니다. 이걸 매직 바이트라고 부르는데, 쉽게 말하면 파일 첫머리에 찍힌 형식 도장입니다.
JPG 사진을 만들고, 파일 속 첫 네 바이트를 그대로 읽어 봤습니다. 측정 환경은 윈도우 11, 파이썬 3.12.10, Pillow 12.3.0입니다.
| 파일 | 파일 앞부분(매직 바이트) | 용량 | 실제 형식 |
|---|---|---|---|
| 원본 photo.jpg | FF D8 FF E0 | 573.4 KB | JPEG |
| 확장자만 .png로 바꾼 파일 | FF D8 FF E0 | 573.4 KB | JPEG |
| 진짜 PNG로 변환한 파일 | 89 50 4E 47 | 3,966.2 KB | PNG |
이름만 .png로 바꾼 파일은 앞부분도, 용량도 원본 JPG와 글자 하나 다르지 않았습니다. 파일을 연 프로그램도 이 파일을 여전히 JPEG로 인식했습니다.
확장자는 파일에 붙인 이름표일 뿐이라, 이름을 바꿔도 속 내용은 그대로입니다.
그런데 왜 어떤 곳은 받아 주고 어떤 곳은 거부할까
관대한 프로그램은 이름표를 무시하고 속 내용을 보고 알아서 엽니다. 그래서 확장자만 바꾼 파일도 그냥 열립니다.
반면 형식을 엄격하게 확인하는 업로드 사이트나 프로그램은 파일 속 매직 바이트를 검사합니다. 이름은 PNG인데 속은 JPEG라 앞뒤가 안 맞으니 거부하는 것입니다. 이름만 바꾼 파일이 어디선 되고 어디선 안 되는 이유가 여기 있습니다.
진짜로 변환하면 무엇이 달라지나
같은 사진을 실제 변환 도구로 PNG로 바꾸자, 앞부분이 89 50 4E 47로 바뀌었습니다. 이게 PNG의 형식 도장입니다. 속 내용 자체가 PNG 방식으로 다시 쓰인 것입니다.
흥미로운 점은 용량입니다. 573KB였던 사진이 PNG로 바꾸자 약 3,966KB로 일곱 배 가까이 커졌습니다. PNG는 화질 손실 없이 저장하는 방식이라, 색이 복잡한 사진에서는 오히려 용량이 크게 늘어납니다.
사진은 JPG가, 로고나 투명 배경 그림은 PNG가 어울립니다. 무작정 PNG로 바꾸면 용량만 커질 수 있습니다.
그래서 제대로 바꾸려면
확장자를 손대는 대신 변환 기능을 쓰면 됩니다. 방법은 어렵지 않습니다.
윈도우라면 기본 그림판에서 파일을 연 뒤 "다른 이름으로 저장"에서 PNG나 JPG를 고르면 실제로 변환됩니다. 맥은 미리보기의 "내보내기"를 쓰면 됩니다. 온라인 변환 사이트도 있지만, 사진이 서버로 올라가니 민감한 이미지라면 기기 안에서 처리하는 편이 안전합니다.
오늘의 한 가지: 확장자 이름을 바꾸는 것은 변환이 아닙니다. "다른 형식으로 저장"을 눌러야 진짜 변환입니다.
직접 확인하고 싶다면
아래 코드는 파일 앞 네 바이트를 읽어 실제 형식을 확인합니다. 이름과 상관없이 속 내용을 보는 것입니다.
with open("photo_renamed.png", "rb") as f:
head = f.read(4)
print(" ".join(f"{b:02X}" for b in head))
# FF D8 FF E0 로 나오면 이름은 png라도 속은 JPEG
바꾼 확장자를 되돌리면 다시 열립니다
확장자를 바꿨더니 파일이 안 열린다면, 이름표와 속이 안 맞아 프로그램이 혼란스러워 하는 경우입니다. 원래 확장자로 되돌리면 대부분 다시 열립니다.
그렇다고 확장자가 아무 의미도 없는 것은 아닙니다. 운영체제가 어떤 프로그램으로 열지 정하는 데 씁니다. 편의상 중요하지만, 파일의 진짜 형식을 바꾸지는 못한다는 것이 요점입니다.
형식을 모를 때 확인하는 자리
파일 앞부분, 이른바 매직 바이트를 보면 됩니다. 위 코드처럼 첫 몇 바이트를 읽으면 이름과 무관하게 실제 형식을 알 수 있습니다.
확장자만 바꾸는 것은 상자에 붙은 라벨만 바꾸는 것과 같습니다. 안에 든 물건은 그대로입니다. 형식을 진짜로 바꾸려면 변환 기능으로 내용을 다시 써 줘야 합니다.
이 글의 매직 바이트와 용량은 윈도우 11, 파이썬 3.12.10, Pillow 12.3.0 환경에서 파일을 직접 만들어 읽고 측정한 값입니다.
이름만 고쳐서는 안 되는 일이 파일 형식마다 되풀이됩니다. 엑셀이 안 열릴 때 손상인지 위장인지 가르는 방법은 구조로 구분한 글에, 한글 문서에서 같은 시도가 안 통하는 이유는 hwp 를 다룬 글에 있습니다.
'이미지' 카테고리의 다른 글
| 사진 옮겼더니 찍은 날짜가 전부 오늘, 촬영일이 진짜 사라지는 지점은 따로 있습니다 (0) | 2026.08.11 |
|---|---|
| 움짤(GIF) 용량이 유독 커요, 프레임과 색상 수로 줄이는 법 (0) | 2026.08.08 |
| PNG를 화질 손실 없이 WebP로, 무손실 변환하면 용량이 얼마나 줄어들까 확인해보니 (0) | 2026.07.27 |
| JPG 저장할 때 화질(quality)을 몇으로 두면 좋을까, 옵션별 용량 실측 방법 (0) | 2026.07.26 |
| 투명 배경 PNG를 JPG로 저장했더니 배경이 새까맣게, 원인과 깔끔한 해결법 (0) | 2026.07.23 |