@ekzotika

Как увеличить изображение до 900х1200 с помощью белых полей по краям?

Добрый день!
Мне нужно увеличить или уменьшить изображение до пропорций 900х1200, но чтобы оно не растягивалось, а именно увеличивалось, с помощью белых полей по краям. Подскажите, пожалуйста, как это сделать?

Есть код, как сделать подобное, но получается в итоге либо 900х900, либо 1200х1200, а мне нужно именно 900х1200

target_width = 900
      target_height = 1200

        for subdir, dirs, files in os.walk('CATALOGUE/images_new/'):
            if subdir != 'CATALOGUE/images_new/':
                for img in files:
                    img = Image.open(subdir + '/' + img)

                    target_ratio = target_height / target_width
                    img_ratio = img.height / img.width
                    if target_ratio > img_ratio:
                        resize_width = target_width
                        resize_height = round(resize_width * img_ratio)
                    else:
                        resize_height = target_height
                        resize_width = round(resize_height / img_ratio)

                    image_resize = img.resize((resize_width, resize_height), Image.ANTIALIAS)
                    background = Image.new('RGBA', (target_width, target_height), (255, 255, 255, 255))
                    offset = (round((target_width - resize_width) / 2), round((target_height - resize_height) / 2))
                    background.paste(image_resize, offset)
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
LazyTalent
@LazyTalent
Data Engineer, Freelancer
1. Создаешь новое изображение с белым фоном:
background_img = Image.new('RGB', (target_width, target_height), color = 'white')

2. Вставляешь свое изображение в новое
background_img.paste(your_img, (upper_left_x, upper_left_y))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы