pil составное несколько изображений, выдающих ошибку

#python #image #python-imaging-library

Вопрос:

Как я могу собрать все эти изображения вместе? Имейте в виду, что я не знаю названия создаваемых изображений, файл выбирается и добавляется в список каким-либо предыдущим кодом.

 list=['file1.png', 'file2.png', 'file3.png', 'file4.png']
final = Image.alpha_composite(list[0], list[1], list[2], list[3])
final.save(f'{random.randint(1,10000)}.png')
 

Комментарии:

1. Ты имеешь в виду list[0], list[1], ... . Квадратные скобки вместо круглых скобок.

2. В этом случае вы могли бы использовать Image.alpha_composite(*list) .

3. Совет: не используйте встроенные имена, как list для переменных. Назовите это как-нибудь так filenames , чтобы было также понятнее, что это значит.

4. Полезно добавить в свой вопрос фактическую ошибку ( отслеживание), а не только код.

5. @9769953 Да, я имел в виду список[0]. Однако это все еще не работает, потому что alpha_composite() принимает 2 позиционных аргумента, но было дано 4. Как я могу скомпоновать эти 4 изображения вместе?

Ответ №1:

Аргументами метода alpha_composite являются два объекта изображения, а не имена файлов.

ИМО, вы не можете использовать этот метод, другой порядок передаваемых файлов приведет к alpha_composite другому результату. Может быть, вы можете попробовать метод blend с фиксированной альфой, например 0,5

Пример Кода

 from PIL import Image

path = 'path of your holder for image files'

im = [Image.open(path '/' file)
    for file in ('10.png', '24.png', '38.png', '52.png')]

im1 = Image.blend(im[0], im[1], 0.5)
im2 = Image.blend(im[2], im[3], 0.5)
image1 = Image.blend(im1, im2, 0.5)
image1.show()

im3 = Image.blend(im[0], im[3], 0.5)
im4 = Image.blend(im[1], im[2], 0.5)
image2 = Image.blend(im3, im4, 0.5)
image2.show()
 

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