2016-08-22 25 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

相關問題