Python/Pillow: масштабировать дочернее изображение, но сохранять размеры родительского изображения

Я смог использовать.thumbnail для масштабирования всего изображения, но я бы масштабировал изображение и сохранил исходные размеры, как показано во втором преобразовании ниже:

введите описание изображения здесь

1 ответ

Решение

Как сказал @Daniel, вы можете создать уменьшенное изображение, используя .thumbnail()Создайте новое изображение с таким же размером исходного изображения, а затем вставьте миниатюру в новое изображение:

def scale_image(img, factor, bgcolor):
    # create new image with same mode and size as the original image
    out = PIL.Image.new(img.mode, img.size, bgcolor)
    # determine the thumbnail size
    tw = int(img.width * factor)
    th = int(img.height * factor)
    # determine the position
    x = (img.width - tw) // 2
    y = (img.height - th) // 2
    # create the thumbnail image and paste into new image
    img.thumbnail((tw,th))
    out.paste(img, (x,y))
    return out

factor должно быть между 0 и 1, и bgcolor цвет фона нового изображения.

Пример:

img = PIL.Image.open('image.jpg')
new_img = scale_image(img, 0.5, 'white')
new_img.show()
Другие вопросы по тегам