Как правильно масштабировать изображение?
Есть исходное изображение:
Как средствами python я могу его масштабировать в :
Изображение обрезается и становится нужного мне разрешения, обычным resize подобного достичь не удалось. Я так понимаю, что мне нужно определить пропорцию, обрезать изображение с помощью crop и только потом увеличить. Размер изображения может быть любым, в данном случае оригинал 500х517, сделать надо 1920х1080 или 1080х1920, в зависимости от пользовательского ввода.
from PIL import Image
image = Image.open(image_path)
image = image.convert('RGBA')
image = image.resize((1920, 1080))
Ответы (1 шт):
Автор решения: Clark Devlin
→ Ссылка
Мне помогло следующее решение, оно определяет горизонтальную либо вертикальную ориентацию изображения и в зависимости от этого обрезает изображения, а потом увеличивает до размеров переданных в new_width и new_height
from PIL import Image
new_width, new_height = 1920, 1080
image = Image.open('test.png')
width, height = image.size
aspect_ratio = width / height
target_aspect_ratio = new_width / new_height
if aspect_ratio > target_aspect_ratio:
crop_width = height * target_aspect_ratio
left = (width - crop_width) / 2
top = 0
right = (width + crop_width) / 2
bottom = height
else:
crop_height = width / target_aspect_ratio
left = 0
top = (height - crop_height) / 2
right = width
bottom = (height + crop_height) / 2
image = image.crop((left, top, right, bottom))
image = image.resize((new_width, new_height))
image.save('resizedimg.png')
