본문 바로가기

전체 글89

파일 이름 뒤 .jpg를 .png로 바꾸면 진짜 변환될까, 흔한 오해와 실제 이미지가 PNG여야 한다고 해서, 파일 이름 끝의 .jpg를 지우고 .png로 바꿔 본 적 있으신가요. 겉보기엔 아이콘도 바뀌고 그럴듯해 보입니다.그런데 어떤 사이트에 올리면 "형식이 맞지 않는다"며 거부당하기도 합니다. 이름만 바꾼 파일이 정말 PNG가 된 건지, 파일 속을 직접 열어 확인해 봤습니다. 파일의 진짜 정체는 이름이 아니라 속에 있습니다모든 파일은 맨 앞에 자기가 무슨 형식인지 알려주는 표시를 담고 있습니다. 이걸 매직 바이트라고 부르는데, 쉽게 말하면 파일 첫머리에 찍힌 형식 도장입니다.JPG 사진을 만들고, 파일 속 첫 네 바이트를 그대로 읽어 봤습니다. 측정 환경은 윈도우 11, 파이썬 3.12.10, Pillow 12.3.0입니다.파일파일 앞부분(매직 바이트)용량실제 형식원본 pho.. 2026. 8. 6.
사진 여러 장을 PDF로 합쳤더니 용량이 몇 배로, 원본 크기 그대로 합치는 법 스캔한 서류나 사진 여러 장을 한 파일로 제출해야 할 때가 있습니다. 그래서 이미지를 모아 PDF 하나로 합쳤는데, 원본을 다 더한 것보다 파일이 훨씬 커져서 당황한 적이 있으실 겁니다.같은 사진을 담는데 왜 어떤 방식은 용량이 그대로고 어떤 방식은 두 배가 넘을까요. 방식만 바꿔 가며 직접 재 봤습니다. 같은 사진 3장, 담는 방식만 바꿔 용량을 쟀습니다가로 2000, 세로 1500 크기의 테스트 이미지 3장을 JPG로 준비했습니다. 세 장을 더한 원본 용량은 약 3,045KB입니다. 이 세 장을 세 가지 방식으로 PDF 하나에 담아 봤습니다.측정 환경은 윈도우 11, 파이썬 3.12.10, Pillow 12.3.0입니다. 담는 방식PDF 용량원본 합계 대비원본 JPG 3장 합계(참고)3,045 KB1.. 2026. 8. 4.
PNG를 화질 손실 없이 WebP로, 무손실 변환하면 용량이 얼마나 줄어들까 확인해보니 WebP는 흔히 화질을 조금 줄여 용량을 아끼는 형식으로 알려져 있습니다. 그런데 WebP에는 무손실 모드가 따로 있어서, 픽셀을 하나도 건드리지 않고 용량만 줄이는 것도 가능합니다. 로고나 화면 캡처처럼 화질을 절대 잃으면 안 되는 이미지에 특히 쓸모가 있습니다.그래서 실제로 PNG 세 종류를 무손실 WebP로 바꿔 용량이 얼마나 줄고, 투명 배경까지 그대로 살아남는지 측정해 봤습니다.세 가지 성격의 이미지로 재 봤습니다이미지 종류마다 압축이 먹히는 정도가 다를 것 같아,성격이 다른 세 장을 준비했습니다.측정 환경은 윈도우 11, 파이썬 3.14.3, 이미지 라이브러리 Pillow이고, WebP는 무손실 옵션으로 저장했습니다.이미지 유형PNG무손실 WebPWebP 크기(PNG 대비)로고 (투명 배경, .. 2026. 7. 27.
JPG 저장할 때 화질(quality)을 몇으로 두면 좋을까, 옵션별 용량 실측 방법 사진을 JPG로 저장할 때 화질 값을 묻는 프로그램이 많습니다.보통 0부터 100 사이의 숫자인데, 이 값을 얼마로 두느냐에 따라 파일 크기가 몇 배씩 달라집니다.무작정 100으로 두면 용량이 커지고, 너무 낮추면 사진이 지저분해집니다. 그렇다면 화질과 용량이 가장 균형 잡히는 지점은 어디일까요.같은 사진을 화질만 단계별로 바꿔 저장하며 용량이 어떻게 변하는지 재 봤습니다.화질 100부터 20까지 저장해 봤습니다1920x1280 크기의 사진 한 장을 화질만 바꿔 가며 저장했습니다.측정 환경은 윈도우 11, 파이썬 3.14.3, 이미지 라이브러리 Pillow입니다. 화질(quality)용량화질 100 대비직전 단계 대비1001658 KB100%기준95825 KB50%50% 감소90484 KB29%41% .. 2026. 7. 26.
큰 CSV를 엑셀 대신 SQL로 다루기, SQLite에 불러와 조회하는 방법 수천 행짜리 CSV에서 도시별 매출 합계나 특정 조건의 주문만 뽑아내려면, 엑셀에서는 피벗 테이블과 필터를 여러 번 거쳐야 합니다. 이럴 때 CSV를 SQLite라는 가벼운 데이터베이스에 한 번 넣어 두면, SQL 한 줄로 원하는 집계를 바로 꺼낼 수 있습니다.SQLite는 서버를 따로 설치할 필요 없이 파일 하나로 동작하는 데이터베이스입니다. 파이썬에는 기본으로 들어 있어 별도 설치도 필요 없습니다. CSV를 넣고 조회하는 과정을 실제 데이터로 해 보겠습니다. 다룰 CSV주문 내역을 담은 간단한 CSV를 예로 씁니다.실제로는 수천, 수만 행이어도 방법은 같습니다.order_id,city,product,amount1,서울,키보드,320002,부산,마우스,180003,서울,모니터,210000... (.. 2026. 7. 25.
커진 CSV를 gzip으로 압축하기, 얼마나 줄고 압축한 채로 바로 읽을 수 있을까? 로그나 내역 데이터를 CSV로 쌓다 보면 파일이 수십 메가바이트까지 불어납니다.텍스트라 압축이 잘 먹는데, 그렇다고 매번 압축을 풀었다 다시 읽자니 번거롭습니다. 그래서 두 가지가 궁금해집니다. gzip으로 묶으면 얼마나 줄고, 압축을 풀지 않은 채로 바로 읽을 수는 없을까? 테스트 했습니다. 결론부터 말하면 CSV는 gzip으로 4배 넘게 줄고,압축을 풀지 않고도 그대로 읽을 수 있습니다.실제 데이터로 확인해 보겠습니다. 20만 행 CSV로 압축률을 재 봤습니다도시, 상태, 금액처럼 반복되는 값이 섞인 20만 행짜리 CSV를 만들어일반 저장과 gzip 저장을 나란히 비교했습니다. 측정 환경은 윈도우 11, 파이썬 3.14.3, pandas입니다.저장 방식용량원본 대비일반 CSV (.csv)7.5 MB.. 2026. 7. 24.
투명 배경 PNG를 JPG로 저장했더니 배경이 새까맣게, 원인과 깔끔한 해결법 배경이 투명한 로고나 아이콘 PNG를 JPG로 바꿨더니, 투명하던 부분이 온통 검은색으로채워져 나오는 경우가 있습니다. 어떤 프로그램에서는 아예 저장이 안 되고 오류만 뜨기도 합니다. 변환 중에 손상이 생긴 것은 아닙니다. JPG라는 형식이 투명을 표현하지 못해서 생기는,정해진 결과입니다.왜 하필 검은색이 되는지와 배경을 원하는 색으로 깔끔하게 저장하는 방법을 실제 코드로 확인해 보겠습니다.먼저 왜 이런 일이 생기는지부터PNG는 각 픽셀에 색 정보와 함께 투명도(알파)라는 값을 하나 더 담습니다. 이 알파 덕분에 배경이 비쳐 보이는 투명 영역을 만들 수 있습니다.그런데 JPG에는 이 알파를 담을 자리가 없습니다.사진 압축에 특화된 형식이라 투명이라는 개념 자체가 없습니다. 그래서 투명 PNG를 JPG로 .. 2026. 7. 23.
중첩된 JSON을 엑셀에서 열리는 CSV로, 배열까지 한 줄씩 펼쳐 변환하기 API에서 받아 온 JSON을 엑셀로 열어 보려고 CSV로 바꿨더니,한 칸 안에 {'name': '김민수', 'grade': 'gold'} 같은 덩어리가통째로 들어가 버린 적이 있습니다. 표로 정리하려던 데이터가 오히려 더 읽기 어려워집니다. 원인은 JSON이 값 안에 또 다른 값을 품는 중첩 구조를 갖는 반면,CSV는 행과 열이 반듯한 평평한 표만 담을 수 있다는 데 있습니다.그래서 변환하려면 중첩을 먼저 펼쳐 줘야 합니다.실제 데이터로 단계별로 해 보겠습니다.다룰 데이터부터 보겠습니다주문 정보를 담은 JSON입니다.고객 정보는 객체 안에 들어 있고(customer),주문 항목은 여러 개라 배열로 묶여 있습니다(items). 실무에서 흔히 만나는 모양입니다.[ { "order_id": 1001,.. 2026. 7. 22.
Parquet 저장할 때 compression만 바꿨을 뿐인데 용량이 갈립니다, 코덱 3종 실측 비교 데이터를 Parquet로 저장하다 보면 compression 옵션에 snappy, gzip, zstd 같은 낯선 이름이 등장합니다.아무거나 골라도 열리기는 하니 대충 넘기기 쉽지만,이 한 줄이 파일 크기와 저장 속도를 꽤 크게 바꿔 놓습니다. 그래서 같은 데이터를 코덱만 바꿔 가며 실제로 저장해 크기와 시간을 재 봤습니다.결론부터 말하면 무조건 가장 작은 코덱이 정답은 아니었습니다. 30만 행을 코덱 네 가지로 저장해 봤습니다회원 명단 형태의 표 데이터 30만 행(컬럼 9개: id, name, age, city, category, status, amount, score, joined)을 만들고,같은 데이터를 코덱만 바꿔 저장했습니다.측정 환경은 윈도우 11, 파이썬 3.14.3, pandas와 pyarr.. 2026. 7. 21.
CSV를 열었더니 주소 뒷부분이 옆 칸으로, 값 속 쉼표 때문에 열이 밀리는 문제 이름과 주소가 잘 정리돼 있던 CSV를 프로그램으로 읽었더니,주소 한 칸이 두 칸으로 쪼개지면서 그 뒤 금액까지 줄줄이 옆으로 밀려 버리는 경우가 있습니다.데이터는 멀쩡한데 표만 어긋난 것처럼 보입니다. 범인은 대개 값 안에 들어간 쉼표입니다. CSV는 쉼표로 칸을 나누는 형식이라,주소나 회사명처럼 값 자체에 쉼표가 들어 있으면그 지점에서 칸이 하나 더 생겨 버립니다. 실제로 재현하고 바로잡아 보겠습니다. 이런 데이터에서 문제가 생깁니다id, name, address, amount 네 칸짜리 CSV를 예로 들겠습니다.그런데 주소 값 안에 상세 번지를 쉼표로 붙여 놓았습니다.id,name,address,amount1,김민수,서울시 강남구 역삼동, 123-4,500002,이서연,부산시 해운대구 우동, 5-6.. 2026. 7. 20.
수백만 행 CSV를 pandas로 읽는 게 느릴 때, 읽기 속도를 끌어올리는 방법 수십 메가바이트가 넘는 CSV를 pd.read_csv로 불러올 때마다몇 초씩 기다리게 되면, 분석을 반복할수록 그 시간이 쌓입니다. 그런데 같은 파일이라도 읽는 방법을 조금만 바꾸면 훨씬 빨라집니다.무엇을 바꾸면 얼마나 빨라지는지 실제로 재 봤습니다.100만 행 CSV로 방법을 비교했습니다id, 도시, 금액 등 6개 열에 100만 행,약 40MB짜리 CSV를 만들어 네 가지 방법으로 읽어 시간을 쟀습니다. 측정 환경은 윈도우 11, 파이썬 3.14.3, pandas와 pyarrow입니다.각 방법을 여러 번 실행해 가장 빠른 값을 적었습니다.읽는 방법시간기본 대비기본 read_csv1.01초기준dtype 지정0.85초1.2배 빠름usecols로 필요한 3열만0.71초1.4배 빠름engine="pyarrow.. 2026. 7. 19.
사진 용량 줄일 때 해상도를 줄일까 화질을 낮출까, 무엇이 더 효율적인지 실측 사진 용량을 줄이는 방법은 크게 두 갈래입니다.하나는 가로세로 크기(해상도)를 줄이는 것이고,다른 하나는 크기는 그대로 두고 화질(quality)을 낮추는 것입니다. 둘 다 파일을 가볍게 만들지만,결과물의 성격은 꽤 다릅니다.어느 쪽이 더 많이 줄어드는지, 그리고 언제 무엇을 골라야 하는지 궁금해서 같은 사진 한 장으로 두 방법을 각각 적용해 용량을 재 봤습니다. 3000x2000 사진 한 장으로 실험했습니다가로 3000, 세로 2000, 약 600만 화소짜리 사진(스마트폰 사진과 비슷한 크기)을 원본으로 두고, 두 방식을 따로따로 적용했습니다. 측정 환경은 윈도우 11, 파이썬 3.14.3, 이미지 라이브러리 Pillow입니다.먼저 화질만 단계별로 낮춘 결과입니다. 크기(3000x2000)는 그대로 두.. 2026. 7. 18.
ZIP 압축을 풀었더니 파일명이 ║╕░φ╝¡ 처럼 깨질 때, 원인과 해결 받은 압축 파일을 풀었더니 안에 든 한글 파일명이 ║╕░φ╝¡.txt 같은 외계어나 물음표(???)로 바뀌어 있는 경우가 있습니다. 정작 파일을 열면 내용은 멀쩡한데 이름만 알아볼 수 없습니다.압축 파일 자체는 멀쩡합니다. ZIP이 파일명을 저장하는 방식과, 압축을 푸는 프로그램이 그 이름을 읽는 방식이 어긋났을 뿐입니다. 윈도우 11과 파이썬 3.14.3 표준 라이브러리 zipfile로 직접 만들어 확인한 결과를 근거로 풀어 보겠습니다. ZIP은 파일명을 어떻게 저장하나ZIP 안에는 각 파일의 이름이 바이트로 적혀 있고, "이 이름이 어떤 인코딩이냐"를 알려 주는 작은 표식이 따로 있습니다. ZIP 규격에서 이 표식은 일반 목적 플래그의 11번째 비트, 값으로는 0x800입니다.이 비트가 켜져 있으면 .. 2026. 7. 16.
같은 사진을 WebP, AVIF, JPG로 저장하면 용량이 얼마나 차이 날까 (직접 측정 후기) 웹에 사진을 올릴 때 형식 하나만 바꿔도 용량이 크게 줄어든다는 말을 자주 듣습니다. WebP가 좋다, 이제는 AVIF다, 하는 이야기 속에서 정작 "내 사진은 얼마나 줄어드는가"는 손에 잡히지 않습니다.그래서 같은 이미지 한 장을 JPG, WebP, AVIF로 똑같이 저장해 파일 크기를 직접 재 봤습니다. 측정 환경은 윈도우 11, 파이썬 3.14.3, 이미지 라이브러리 Pillow 12.2.0입니다. 결과는 흥미로웠고, 동시에 "이 숫자를 그대로 믿으면 안 되는 이유"도 함께 드러났습니다. 측정 방법부터실제 사진과 비슷하게, 색이 부드럽게 번지는 1280x853 그라데이션 이미지를 만들고 약한 노이즈를 섞은 뒤 살짝 흐림을 줬습니다. 이 한 장을 세 형식으로 같은 품질값(quality) 70, 80,.. 2026. 7. 15.
같은 폴더를 ZIP, 7Z, TAR.GZ로 압축하면 용량이 얼마나 다를까, 3종 직접 측정 파일 여러 개를 하나로 묶어 보낼 때 ZIP으로 할지 7Z로 할지, 아니면 개발자들이 자주 쓰는 TAR.GZ로 할지 고민한 적이 있을 것입니다. 다들 "7Z가 더 작다"고 하는데, 정말 그런지, 차이가 얼마나 나는지는 막상 숫자로 보기 어렵습니다.그래서 성격이 다른 파일을 한 폴더에 모아 세 형식으로 직접 압축해 봤습니다. 결과부터 말하면 7Z가 가장 작긴 했지만, 차이는 파일 종류에 따라 크게 흔들렸습니다. 일부러 성격이 다른 파일을 섞었습니다압축률은 묶는 파일이 무엇이냐에 따라 천차만별입니다. 그래서 한쪽으로 치우치지 않게, 잘 줄어드는 파일과 거의 안 줄어드는 파일을 일부러 함께 담았습니다. 측정 환경은 윈도우 11, 파이썬 3.14.3이며 ZIP은 표준 라이브러리 zipfile, TAR.GZ는 t.. 2026. 7. 14.