본문 바로가기

파일 형식 백과사전

여러 개의 PDF를 하나로 합치고, 필요한 페이지만 빼내는 법 계약서, 영수증, 신분증 사본을 따로따로 스캔해 두었다가 한 파일로 제출해야 할 때가 있습니다. 반대로 여러 장짜리 PDF에서 딱 두 장만 보내야 할 때도 있고요.PDF는 워드처럼 열어서 이어 붙이기가 쉽지 않아 막막하게 느껴집니다. 그래서 합치기와 페이지 빼내기를 실제로 해 보고, 그 과정에서 용량과 페이지 수가 어떻게 변하는지 함께 재 봤습니다. PDF 3개를 실제로 합쳐 봤습니다3페이지짜리 계약서, 2페이지 영수증, 1페이지 신분증 사본을 준비했습니다. 세 파일을 더하면 6페이지, 용량은 약 838KB입니다.이 셋을 하나로 병합한 결과입니다. 측정 환경은 윈도우 11, 파이썬 3.12.10, pypdf 6.14.2입니다.파일페이지용량계약서.pdf3418.5 KB영수증.pdf2279.9 KB신분증... 더보기
파일 이름 뒤 .jpg를 .png로 바꾸면 진짜 변환될까, 흔한 오해와 실제 이미지가 PNG여야 한다고 해서, 파일 이름 끝의 .jpg를 지우고 .png로 바꿔 본 적 있으신가요. 겉보기엔 아이콘도 바뀌고 그럴듯해 보입니다.그런데 어떤 사이트에 올리면 "형식이 맞지 않는다"며 거부당하기도 합니다. 이름만 바꾼 파일이 정말 PNG가 된 건지, 파일 속을 직접 열어 확인해 봤습니다. 파일의 진짜 정체는 이름이 아니라 속에 있습니다모든 파일은 맨 앞에 자기가 무슨 형식인지 알려주는 표시를 담고 있습니다. 이걸 매직 바이트라고 부르는데, 쉽게 말하면 파일 첫머리에 찍힌 형식 도장입니다.JPG 사진을 만들고, 파일 속 첫 네 바이트를 그대로 읽어 봤습니다. 측정 환경은 윈도우 11, 파이썬 3.12.10, Pillow 12.3.0입니다.파일파일 앞부분(매직 바이트)용량실제 형식원본 pho.. 더보기
PDF 용량 줄이기를 눌러도 안 줄어드는 이유, 스캔 문서라면 방법이 다릅니다 메일 첨부나 서류 제출에서 "PDF 용량이 너무 큽니다"라는 벽에 부딪히는 일이 많습니다. 그런데 압축 도구를 돌려 봐도 용량이 그대로일 때가 있습니다. 도구가 고장 난 걸까요.사실은 PDF의 종류에 따라 통하는 방법이 다르기 때문입니다. 텍스트로 된 PDF와 스캔한 PDF를 각각 압축해 보면, 결과가 정반대로 갈립니다. 직접 재 봤습니다. 같은 압축인데 결과가 정반대였습니다텍스트로 채운 PDF와, 종이를 찍은 것 같은 스캔 PDF를 각각 만들어 같은 방식으로 압축했습니다. 측정 환경은 윈도우 11, 파이썬 3.12.10, pypdf 6.14.2입니다.종류원본일반 압축 후텍스트 기반 PDF19.3 KB4.0 KB (79% 감소)스캔(이미지) 기반 PDF729.8 KB729.8 KB (그대로)텍스트 .. 더보기
사진 여러 장을 PDF로 합쳤더니 용량이 몇 배로, 원본 크기 그대로 합치는 법 스캔한 서류나 사진 여러 장을 한 파일로 제출해야 할 때가 있습니다. 그래서 이미지를 모아 PDF 하나로 합쳤는데, 원본을 다 더한 것보다 파일이 훨씬 커져서 당황한 적이 있으실 겁니다.같은 사진을 담는데 왜 어떤 방식은 용량이 그대로고 어떤 방식은 두 배가 넘을까요. 방식만 바꿔 가며 직접 재 봤습니다. 같은 사진 3장, 담는 방식만 바꿔 용량을 쟀습니다가로 2000, 세로 1500 크기의 테스트 이미지 3장을 JPG로 준비했습니다. 세 장을 더한 원본 용량은 약 3,045KB입니다. 이 세 장을 세 가지 방식으로 PDF 하나에 담아 봤습니다.측정 환경은 윈도우 11, 파이썬 3.12.10, Pillow 12.3.0입니다. 담는 방식PDF 용량원본 합계 대비원본 JPG 3장 합계(참고)3,045 KB1.. 더보기
PNG를 화질 손실 없이 WebP로, 무손실 변환하면 용량이 얼마나 줄어들까 확인해보니 WebP는 흔히 화질을 조금 줄여 용량을 아끼는 형식으로 알려져 있습니다. 그런데 WebP에는 무손실 모드가 따로 있어서, 픽셀을 하나도 건드리지 않고 용량만 줄이는 것도 가능합니다. 로고나 화면 캡처처럼 화질을 절대 잃으면 안 되는 이미지에 특히 쓸모가 있습니다.그래서 실제로 PNG 세 종류를 무손실 WebP로 바꿔 용량이 얼마나 줄고, 투명 배경까지 그대로 살아남는지 측정해 봤습니다. 세 가지 성격의 이미지로 재 봤습니다이미지 종류마다 압축이 먹히는 정도가 다를 것 같아,성격이 다른 세 장을 준비했습니다.측정 환경은 윈도우 11, 파이썬 3.14.3, 이미지 라이브러리 Pillow이고, WebP는 무손실 옵션으로 저장했습니다.이미지 유형PNG무손실 WebPWebP 크기(PNG 대비)로고 (투명 배경,.. 더보기
JPG 저장할 때 화질(quality)을 몇으로 두면 좋을까, 옵션별 용량 실측 방법 사진을 JPG로 저장할 때 화질 값을 묻는 프로그램이 많습니다.보통 0부터 100 사이의 숫자인데, 이 값을 얼마로 두느냐에 따라 파일 크기가 몇 배씩 달라집니다.무작정 100으로 두면 용량이 커지고, 너무 낮추면 사진이 지저분해집니다. 그렇다면 화질과 용량이 가장 균형 잡히는 지점은 어디일까요.같은 사진을 화질만 단계별로 바꿔 저장하며 용량이 어떻게 변하는지 재 봤습니다.화질 100부터 20까지 저장해 봤습니다1920x1280 크기의 사진 한 장을 화질만 바꿔 가며 저장했습니다.측정 환경은 윈도우 11, 파이썬 3.14.3, 이미지 라이브러리 Pillow입니다. 화질(quality)용량화질 100 대비직전 단계 대비1001658 KB100%기준95825 KB50%50% 감소90484 KB29%41% .. 더보기
큰 CSV를 엑셀 대신 SQL로 다루기, SQLite에 불러와 조회하는 방법 수천 행짜리 CSV에서 도시별 매출 합계나 특정 조건의 주문만 뽑아내려면, 엑셀에서는 피벗 테이블과 필터를 여러 번 거쳐야 합니다. 이럴 때 CSV를 SQLite라는 가벼운 데이터베이스에 한 번 넣어 두면, SQL 한 줄로 원하는 집계를 바로 꺼낼 수 있습니다.SQLite는 서버를 따로 설치할 필요 없이 파일 하나로 동작하는 데이터베이스입니다. 파이썬에는 기본으로 들어 있어 별도 설치도 필요 없습니다. CSV를 넣고 조회하는 과정을 실제 데이터로 해 보겠습니다. 다룰 CSV주문 내역을 담은 간단한 CSV를 예로 씁니다.실제로는 수천, 수만 행이어도 방법은 같습니다.order_id,city,product,amount1,서울,키보드,320002,부산,마우스,180003,서울,모니터,210000... (.. 더보기
커진 CSV를 gzip으로 압축하기, 얼마나 줄고 압축한 채로 바로 읽을 수 있을까? 로그나 내역 데이터를 CSV로 쌓다 보면 파일이 수십 메가바이트까지 불어납니다.텍스트라 압축이 잘 먹는데, 그렇다고 매번 압축을 풀었다 다시 읽자니 번거롭습니다. 그래서 두 가지가 궁금해집니다. gzip으로 묶으면 얼마나 줄고, 압축을 풀지 않은 채로 바로 읽을 수는 없을까? 테스트 했습니다. 결론부터 말하면 CSV는 gzip으로 4배 넘게 줄고,압축을 풀지 않고도 그대로 읽을 수 있습니다.실제 데이터로 확인해 보겠습니다. 20만 행 CSV로 압축률을 재 봤습니다도시, 상태, 금액처럼 반복되는 값이 섞인 20만 행짜리 CSV를 만들어일반 저장과 gzip 저장을 나란히 비교했습니다. 측정 환경은 윈도우 11, 파이썬 3.14.3, pandas입니다.저장 방식용량원본 대비일반 CSV (.csv)7.5 MB.. 더보기