2013-12-10 53 views
0

我正在開發一個應用程序,我需要從用戶創建的7個選擇中創建一個圖像,我有這個工作,但我不知道是否有更好的方法去做吧?目前,我這樣做,Python粘貼多個圖像創建一個

#!/usr/bin/env 

import Image 

def main( ): #{ 

    layer1 = Image.open("img/layer1.png"); 
    layer2 = Image.open("img/layer2.png"); 
    layer3 = Image.open("img/layer3.png"); 
    layer4 = Image.open("img/layer4.png"); 
    layer5 = Image.open("img/layer5.png"); 
    layer6 = Image.open("img/layer6.png"); 
    layer7 = Image.open("img/layer7.png"); 

    image = Image.new("RGBA", (704, 469)); 

    image.paste(layer1, (0, 0)); 

    image.save("img/new_image.png"); 

    base = Image.open("img/new_image.png"); 

    base.paste(layer2, (0,0), layer2.convert("RGBA")); 

    image.save("img/new_image.png"); 

    base.paste(layer3, (0,0), layer3.convert("RGBA")); 

    image.save("img/new_image.png"); 

    base.paste(layer4, (0,0), layer4.convert("RGBA")); 

    image.save("img/new_image.png"); 

    base.paste(layer5, (0,0), layer5.convert("RGBA")); 

    image.save("img/new_image.png"); 

    base.paste(layer6, (0,0), layer6.convert("RGBA")); 

    image.save("img/new_image.png"); 

    base.paste(layer7, (0,0), layer7.convert("RGBA")); 

    image.open("img/new_image.png"); 

    print image.info; 

    del base; 
    del image; 

#} 

if (__name__ == "__main__"): #{ 

    main(); 

#} 

有沒有更好的方式來做到這一點,最終我想創建最終圖像有一個隨機字符串作爲名字,是有辦法做到這一點,並有腳本返回該名稱,以便我可以在其他地方使用它?

+0

要具有唯一的名稱就可以計算出文件本身的SHA1哈希。 – smeso

回答

0

試試這個:

#!/usr/bin/env python 
from PIL import Image 
import glob 
def main(): 

layers_l = glob.glob("*.png") 
layers_l = map(lambda x :Image.open(x) ,layers_l) 

image = Image.new("RGBA", (2048*3, 2048*3)) 
image.save("new_image.png") 
base = Image.open("new_image.png") 

for layer in layers_l[1:]: 
    base.paste(layer, (0,0), layer.convert("RGBA")) 
    image.save("new_image.png") 
    print layer 

print image.info 

if (__name__ == "__main__"): main()