我正在尝试使用以下内容将三个图像合并为一个使用PIL和Python
import sys
from PIL import Image
images = map(Image.open, ['ib1.jpg', 'ib2.jpg', 'ib3.jpg'])
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))
x_offset = 0
for im in images:
new_im.paste(im, (x_offset,0))
x_offset += im.size[0]
new_im.save('test.jpg')
test.jpg图像似乎是正确的高度,但图像完全是黑色。
有人可以帮忙吗?
答案 0 :(得分:5)
2016-03-29编辑:
Python 3中的 map
返回一个生成器,它在zip
函数调用中耗尽,因此生成器只会在for循环中生成一个空列表。
你可以改变
images = map(Image.open, ['ib1.jpg', 'ib2.jpg', 'ib3.jpg'])
到
images = list(map(Image.open, ['ib1.jpg', 'ib2.jpg', 'ib3.jpg']))
它应该按预期工作。
旧帖子:
我已经在我的机器上进行了测试,似乎在Python 2中执行的相同代码(在我的机器上为2.7.11)可以正常工作,但Python 3(3.5.1)却没有。我在弄清楚原因。