2016-08-22 29 views
0

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

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]) 
+0

StackOverflow不是教程写入服务。 –

+0

我的歉意。我一直在努力寻找一个工作程序来执行这个功能几个星期,所以我欣喜若狂地弄清楚它是如何工作的。 – DartmouthDude82

回答

-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]) 

错误处理,你在上面看到了无关合并图像的过程,而是声称存在的参数传递给一个正确的号码p程序

+0

非常感谢你! – DartmouthDude82

相关问题