Изменение размера любого изображения до 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")

Другие вопросы по тегам