Python PIL 组合图像生成全黑图像
Python PIL combine images results in an all black image
我正在尝试使用 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 图片的高度似乎正确,但图片全黑。
有人能帮忙吗?
2016-03-29 编辑:
map
in Python 3 returns 一个生成器,它在你的 zip
函数调用中耗尽了,所以生成器只在你的 for 中生成一个空列表环形。
你可以改变
images = map(Image.open, ['ib1.jpg', 'ib2.jpg', 'ib3.jpg'])
至
images = list(map(Image.open, ['ib1.jpg', 'ib2.jpg', 'ib3.jpg']))
它应该如您所愿地工作。
年长 post:
我已经在我的机器上进行了测试,似乎在 Python 2(在我的机器上是 2.7.11)中执行的相同代码可以正常工作,但是 Python 3(3.5.1)不。我正在弄清楚为什么。
我正在尝试使用 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 图片的高度似乎正确,但图片全黑。
有人能帮忙吗?
2016-03-29 编辑:
map
in Python 3 returns 一个生成器,它在你的 zip
函数调用中耗尽了,所以生成器只在你的 for 中生成一个空列表环形。
你可以改变
images = map(Image.open, ['ib1.jpg', 'ib2.jpg', 'ib3.jpg'])
至
images = list(map(Image.open, ['ib1.jpg', 'ib2.jpg', 'ib3.jpg']))
它应该如您所愿地工作。
年长 post:
我已经在我的机器上进行了测试,似乎在 Python 2(在我的机器上是 2.7.11)中执行的相同代码可以正常工作,但是 Python 3(3.5.1)不。我正在弄清楚为什么。