1. 이미지 별로 진행
from PIL import Image
def downsample_image(image_path, target_width):
# 이미지 열기
img = Image.open(image_path)
# 원본 이미지 크기 확인
original_width, original_height = img.size
# 가로 길이를 512로 맞추기 위해 새로운 높이 계산
target_height = int((target_width / original_width) * original_height)
# 이미지를 가로 길이 512로 다운샘플링
downscaled_img = img.resize((target_width, target_height), Image.LANCZOS)
return downscaled_img
# 입력 이미지 파일 경로와 타겟 가로 길이(512)를 넣어서 다운샘플링된 이미지 얻기
input_image_path = "인풋이미지경로/이미지이름.jpg"
target_width = 512
downsampled_image = downsample_image(input_image_path, target_width)
# 다운샘플링된 이미지 저장 (옵션)
downsampled_image.save("저장할 경로/저장할 이름.jpg")
2. 폴더 내에 있는 이미지 전부 다 진행
import os
from PIL import Image
def get_next_filename(folder_path, base_filename):
i = 1
filename = f"{base_filename}_{i}.jpg"
while os.path.exists(os.path.join(folder_path, filename)):
i += 1
filename = f"{base_filename}_{i}.jpg"
return filename
def downsample_images_in_folder(input_folder, target_width, output_folder):
# 입력 폴더 내의 모든 이미지 파일 가져오기
image_files = [file for file in os.listdir(input_folder) if file.lower().endswith(('.jpg', '.jpeg', '.png'))]
for image_file in image_files:
# 이미지 파일 경로 생성
input_image_path = os.path.join(input_folder, image_file)
# 이미지 열기
img = Image.open(input_image_path)
# 원본 이미지 크기 확인
original_width, original_height = img.size
# 가로 길이를 512로 맞추기 위한 새로운 높이 계산
target_height = int((target_width / original_width) * original_height)
# 이미지를 가로 길이 512로 다운샘플링
downscaled_img = img.resize((target_width, target_height), Image.LANCZOS)
# 이미지 저장을 위한 새로운 파일 이름 생성
base_filename = os.path.splitext(os.path.basename(image_file))[0]
new_filename = get_next_filename(output_folder, base_filename)
# 다운샘플링된 이미지 저장
downscaled_img.save(os.path.join(output_folder, new_filename))
# 입력 이미지가 있는 폴더 경로와 출력 이미지를 저장할 폴더 경로 지정
input_folder = "인풋 이미지들이 있는 경로"
output_folder = "출력 이미지들 저장할 경로"
target_width = 512
# 이미지 다운샘플링 및 저장
downsample_images_in_folder(input_folder, target_width, output_folder)
가로 512에 맞추어 다운샘플링 하는 코드
이 상태에서 아웃페인팅 512로 진행하면 위로만 아웃페인팅이 진행되면서 상하 좌우를 모두 하는것보다 자연스러움
'code 공부' 카테고리의 다른 글
이미지 리사이징 code (0) | 2023.07.05 |
---|---|
탐욕 알고리즘(Greedy Algorithm), 매트로이드 구조(Matroid Theory) (0) | 2023.05.18 |
파이썬 파일 불러올 때 \UXXXXXXXX escape 에러 해결법 (0) | 2023.05.03 |