반응형
특정 경로에 있는 이미지의 파일크기과 해상도를 추출하는 코드입니다.
folder_path에 경로를 넣어주시고
원하시는 함수 호출만 해주시면 됩니다 !
1. 폴더 경로에 존재하는 이미지 파일(jpg, jpeg, gif, png) 의 크기, 해상도를 추출하여 csv, json 파일로 저장한다.
from PIL import Image
import os
import csv
import json
def extract_image_info(folder_path, output_path=None, output_format='csv', sort_desc=True):
supported_ext = {'.png', '.jpg', '.jpeg', '.gif'}
image_info_list = []
for filename in os.listdir(folder_path):
ext = os.path.splitext(filename)[1].lower()
if ext in supported_ext:
file_path = os.path.join(folder_path, filename)
try:
with Image.open(file_path) as img:
width, height = img.size
size_in_kb = os.path.getsize(file_path) / 1024
image_info_list.append({
'filename': filename,
'size_kb': round(size_in_kb, 2),
'resolution': f"{width}x{height}"
})
except Exception as e:
print(f"Error processing {filename}: {e}")
# 파일 크기 기준 정렬
image_info_list.sort(key=lambda x: x['size_kb'], reverse=sort_desc)
# 출력
for info in image_info_list:
print(f"File: {info['filename']}, Size: {info['size_kb']:.2f}KB, Resolution: {info['resolution']}")
# 결과 저장
if output_path:
try:
if output_format.lower() == 'csv':
with open(output_path, mode='w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=['filename', 'size_kb', 'resolution'])
writer.writeheader()
writer.writerows(image_info_list)
print(f"\nCSV 파일로 저장됨: {output_path}")
elif output_format.lower() == 'json':
with open(output_path, mode='w', encoding='utf-8') as f:
json.dump(image_info_list, f, indent=4, ensure_ascii=False)
print(f"\nJSON 파일로 저장됨: {output_path}")
else:
print("지원하지 않는 형식입니다. 'csv' 또는 'json'만 가능합니다.")
except Exception as e:
print(f"파일 저장 중 오류 발생: {e}")
# 사용 예시
folder_path = r"C:\Users\username\tistory\바탕 화면\wallpaper"
output_file = r"C:\Users\username\tistory\바탕 화면\image_info.csv" # 또는 .json
extract_image_info(folder_path, output_file, output_format='csv') # 또는 'json'
반응형