DeepDanbooru / cropImage.py
MonkeyJuice's picture
Update cropImage style
d3cab6f
raw history blame
No virus
1.12 kB
#!/usr/bin/env python
from __future__ import annotations
import PIL.Image
def cropImage(image: PIL.Image.Image):
original_width, original_height = image.size
scale = max(original_width, original_height) / min(original_width, original_height)
target_width = 512
target_height = 768
if scale < 1.1:
target_width = 640
target_height = 640
elif original_width > original_height:
target_width = 768
target_height = 512
if original_width / original_height > target_width / target_height:
new_width = int(original_height * (target_width / target_height))
crop_box = ((original_width - new_width) // 2, 0, (original_width + new_width) // 2, original_height)
else:
new_height = int(original_width * (target_height / target_width))
crop_box = (0, (original_height - new_height) // 2, original_width, (original_height + new_height) // 2)
cropped_image = image.convert("RGB")
cropped_image = cropped_image.crop(crop_box)
cropped_image = cropped_image.resize((target_width, target_height))
return cropped_image