#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()