Изменение размера любого изображения до 512 x 512
Я пытаюсь обучить стабильную модель распространения, которая получает изображения в качестве входных данных.
Я загружаю большую часть изображений из Интернета, и они имеют разные размеры и формы, поэтому мне нужно предварительно обработать их и преобразовать в512 x 512
.
Если я возьму это2000 × 1434
изображение:
И я пытаюсь изменить его размер с помощью:
from PIL import Image
# Open an image file
with Image.open("path/to/Image.jpg") as im:
# Create a thumbnail of the image
im.thumbnail((512, 512))
# Save the thumbnail
im.save("path/to/Image_resized.jpg")
я понимаю это512 × 367
изображение:
Но мне нужно 512 по ширине и по высоте, без искажения изображения , как вы можете добиться на этом сайте:
Любые идеи о том, как я могу добиться этого преобразования с помощью python?
1 ответ
Я не думаю, что изменение размера изображения с другим соотношением сторон 1:1 (512:512) возможно без искажения изображения. Вы можете изменить размер более короткого размера изображения до 512 пикселей и обрезать большой размер до 512 пикселей.
from PIL import Image
# Open an image file
with Image.open("image.jpg") as im:
width, height = im.size
if width < height:
newWidth = 512
newHeight = int(height / (width / 512))
cropTop = (newHeight - 512) // 2
cropBottom = cropTop + 512
crop = (0, cropTop, 512, cropBottom)
else:
newHeight = 512
newWidth = int(width / (height / 512))
cropLeft = (newWidth - 512) // 2
cropRight = cropLeft + 512
crop = (cropLeft, 0, cropRight, 512)
imResize = im.resize((newWidth, newHeight))
imCrop = imResize.crop(crop)
imCrop.save("image_resized_cropped.jpg")