У меня есть следующий код, который последовательно склеивает все изображения в определенную папку. Однако изображения могут иметь разные размеры, и я хотел бы сшить их таким образом, чтобы изображение с большей высотой изменялось, чтобы соответствовать изображению с меньшей высотой без изменения соотношения сторон.
import os
import sys
from PIL import Image
def stitch(name1, name2):
images = map(Image.open, [name1, name2])
widths, heights = zip(*(i.size for i in images))
total_width = sum(widths)
max_height = max(heights)
new_im = Image.new('RGB', (total_width, max_height), color = (255, 255, 255))
x_offset = 0
for im in images:
new_im.paste(im, (x_offset,0))
x_offset += im.size[0]
new_im.save(name1)
# ----
folder = '/Users/folder/Desktop/folder'
# get all files in alphabetic order
all_files = sorted(os.listdir(folder))
if '.DS_Store' in all_files:
all_files.remove('.DS_Store')
# add folder to filename to have full path
all_files = [os.path.join(folder, name) for name in all_files]
# create pairs
it = iter(all_files)
for a, b in zip(it, it):
stitch(a, b)