将2张图像合并到新图像上:有人可以解释这段代码吗?

时间:2016-08-22 15:34:57

标签: python image

我正在尝试编写一个代码将两张照片并排合并到一个新图像上,我发现这个脚本在线 - 但是,我不知道它是如何工作的。我在哪里输入要合并的图像文件?有人可以向我解释一下这段代码吗?谢谢!

from PIL import Image
import sys

if not len(sys.argv) > 3:
    raise SystemExit("Usage: %s src1 [src2] .. dest" % sys.argv[0])

images = map(Image.open, sys.argv[1:-1])
w = sum(i.size[0] for i in images)
mh = max(i.size[1] for i in images)

result = Image.new("RGBA", (w, mh))

x = 0
for i in images:
    result.paste(i, (x, 0))
    x += i.size[0]

result.save(sys.argv[-1])

1 个答案:

答案 0 :(得分:-1)

这很容易。使用sys.argv中提供的名称打开图像(程序的参数):

images = map(Image.open, sys.argv[1:-1])

您计算新宽度(打开图像的所有宽度的总和,即i.size [0])

w = sum(i.size[0] for i in images)

高度,应该等于最高图像的高度(这样它可以适合每个)

mh = max(i.size[1] for i in images)

使用计算的dumentions创建图像

result = Image.new("RGBA", (w, mh))

对于打开的每个图像,将其(带有paste函数)插入到左边x像素点和顶部0点,并将插入图像的宽度添加到x,使下一个图像相邻,

重叠
x = 0
for i in images:
    result.paste(i, (x, 0))
    x += i.size[0]

保存图片

result.save(sys.argv[-1])

您在顶部看到的错误处理与合并图像的过程无关,而是断言程序有正确数量的参数