본문 바로가기

파일 형식 백과사전

사진 여러 장을 PDF로 합쳤더니 용량이 몇 배로, 원본 크기 그대로 합치는 법

스캔한 서류나 사진 여러 장을 한 파일로 제출해야 할 때가 있습니다. 그래서 이미지를 모아 PDF 하나로 합쳤는데, 원본을 다 더한 것보다 파일이 훨씬 커져서 당황한 적이 있으실 겁니다.

같은 사진을 담는데 왜 어떤 방식은 용량이 그대로고 어떤 방식은 두 배가 넘을까요. 방식만 바꿔 가며 직접 재 봤습니다.

사진 3장(원본 합계 3,045KB)을 PDF로 합칠 때 방식별 용량 막대 그래프. 원본 그대로 담기 2,992KB(0.98배), 재인코딩 quality 95는 4,788KB(1.57배), 최대화질 quality 100은 8,229KB(2.70배)

 

같은 사진 3장, 담는 방식만 바꿔 용량을 쟀습니다

가로 2000, 세로 1500 크기의 테스트 이미지 3장을 JPG로 준비했습니다. 세 장을 더한 원본 용량은 약 3,045KB입니다. 이 세 장을 세 가지 방식으로 PDF 하나에 담아 봤습니다.

측정 환경은 윈도우 11, 파이썬 3.12.10, Pillow 12.3.0입니다.

 

담는 방식 PDF 용량 원본 합계 대비
원본 JPG 3장 합계(참고) 3,045 KB 1.00배
A. 원본을 다시 압축하지 않고 그대로 담기 2,992 KB 0.98배
B. 화질 95로 다시 저장해 담기 4,788 KB 1.57배
C. 화질 100으로 다시 저장해 담기 8,229 KB 2.70배

같은 사진인데도 담는 방식에 따라 용량이 세 배 가까이 벌어졌습니다. A는 오히려 원본보다 살짝 작은데, 사진에 붙어 있던 부가 정보가 정리됐기 때문입니다.

 


왜 어떤 방식은 용량이 두 배가 될까

핵심은 이미지를 다시 압축(재인코딩)하느냐입니다. JPG 사진은 이미 압축이 끝난 상태입니다.

PDF는 이 JPG 데이터를 손대지 않고 그대로 품을 수 있습니다. 그게 A 방식이고, 그래서 용량이 원본과 거의 같습니다.

 

반면 B와 C는 사진을 화면에 한 번 펼친 뒤 다시 JPG로 저장해 담습니다. 이때 화질을 높게 잡으면, 눈에 보이는 화질은 그대로인데 파일에는 불필요한 데이터가 더 붙습니다. 이미 압축된 그림을 굳이 다시 그려 넣는 셈이라 용량만 늘어납니다.

즉 용량이 폭증하는 원인은 사진 자체가 아니라, 도구가 사진을 다시 압축해 담기 때문입니다.

 

이 방향은 사진 내용과 상관없이 구조적으로 같습니다. 원본을 그대로 담으면 크기가 유지되고, 다시 저장하면 커지는 쪽입니다. 다만 정확한 배율은 사진과 화질 설정에 따라 달라집니다.

 

그래서 원본 크기를 지키며 합치려면

목적에 따라 도구를 고르면 됩니다.

용량을 최대한 지키고 싶을 때는 이미지를 다시 압축하지 않고 그대로 담는 전용 도구를 씁니다. img2pdf 같은 무료 도구가 이 방식이라 원본 크기를 거의 그대로 유지합니다. 온라인 변환 사이트도 편하지만, 서류가 서버로 업로드되므로 민감한 문서라면 피하는 편이 안전합니다.

 

간편함이 우선일 때

윈도우 기본 기능인 Microsoft Print to PDF나 스마트폰 기본 스캔(아이폰 파일 앱, 안드로이드 구글 드라이브 스캔)으로도

충분합니다. 다만 이 방식들은 이미지를 다시 그려 담아 용량이 커질 수 있습니다.

 

결정 기준: 제출 용량 제한이 빡빡하면 원본을 그대로 담는 도구, 장수가 적고 편의가 우선이면 기본 기능으로 충분합니다.

 

직접 확인하고 싶다면

아래 코드는 사진 여러 장을 두 방식으로 각각 PDF에 담아 크기를 비교합니다. 파이썬과 Pillow가 설치돼 있어야 합니다.

from PIL import Image

files = ["photo1.jpg", "photo2.jpg", "photo3.jpg"]
imgs = [Image.open(f) for f in files]

# A. 원본을 그대로 담기 (다시 압축하지 않음)
imgs[0].save("A.pdf", save_all=True, append_images=imgs[1:], quality="keep")

# B. 다시 압축해서 담기 (용량이 커지는 방식)
rgb = [Image.open(f).convert("RGB") for f in files]
rgb[0].save("B.pdf", save_all=True, append_images=rgb[1:], quality=95)

두 파일의 크기를 비교해 보면 A가 원본 합계와 비슷하고 B가 더 큰 것을 확인할 수 있습니다. quality를 "keep"으로 주는 것이 원본을 다시 건드리지 않는 핵심입니다.

 

자주 묻는 질문

Q. 용량이 커진 PDF도 화질은 더 좋은가요?
아닙니다. 원본에 없던 화질이 생기지는 않습니다. 다시 압축하는 과정에서 데이터만 늘어난 것이라, 눈에 보이는 화질 차이는 거의 없습니다.

 

Q. 이미 커진 PDF를 다시 줄일 수 있나요?
PDF 용량 압축 기능이 있는 도구로 다시 저장하면 어느 정도 줄일 수 있습니다. 다만 이때는 화질이 실제로 조금 떨어질 수 있어, 처음부터 원본을 그대로 담는 편이 깔끔합니다.

 

Q. 사진 장수가 많으면 어떤 방식이 유리한가요?
장수가 많을수록 재인코딩으로 인한 용량 증가가 누적되므로, 원본을 그대로 담는 방식이 더 크게 유리해집니다.

 

사진을 PDF로 합칠 때 용량이 갑자기 커진다면, 사진이 무거워서가 아니라 도구가 사진을 다시 압축하고 있을 가능성이 큽니다. 원본을 그대로 담는 방식 하나만 기억해 두면 제출 용량 문제로 고생할 일이 줄어듭니다.

사진 한 장의 용량 자체를 줄이는 방법이 궁금하다면, 해상도와 화질 중 무엇을 조절하는 게 효율적인지 다룬 글도 함께 참고해 보세요.

 

이 글의 용량 수치는 윈도우 11, 파이썬 3.12.10, Pillow 12.3.0 환경에서 직접 측정한 값입니다.

 

 

CSV를 Parquet로 변환하기, 특별한 프로그램 없이 pandas 한 줄이면 됩니다

Parquet라는 이름을 처음 보면 전용 변환 프로그램이나 빅데이터 도구를 따로 깔아야 한다고 짐작하기 쉽습니다. 그래서 변환 자체를 어렵게 느끼고 미뤄 두는 경우가 많습니다.실제로는 파이썬

richyeon.com

 

 

같은 데이터를 CSV와 Parquet로 저장하면 용량과 읽기 속도가 얼마나 차이 날까

데이터 분석을 하다 보면 "그냥 CSV로 저장하면 되지, 왜 굳이 Parquet를 쓰지?"라는 의문이 들 때가 있습니다. 둘 다 표 형태 데이터를 담는 파일인데, 한쪽은 메모장으로도 열리고 한쪽은 그렇지도

richyeon.com

 

 

CSV를 UTF-8로 저장하는 법, 엑셀과 메모장과 파이썬에서 각각

동료에게 받은 CSV를 웹 업로드 양식에 올렸더니 "UTF-8로 저장해서 다시 올려 주세요"라는 안내가 떴습니다. 분명 엑셀에서 멀쩡히 열리던 파일인데, 시스템이 요구하는 인코딩이 따로 있는 상황

richyeon.com