2012-09-01 63 views
2

對於比我更瞭解Python圖像庫的人,我有一個快速問題。我有一個alpha通道的PNG圖像,我希望前兩行的像素是完全透明的。而已!到目前爲止,我的努力使前兩行變得透明,但原始圖像失去了alpha通道信息。任何人都知道實現這一目標的最佳方式?Python圖像庫 - 使圖像區域透明

回答

2

你可以這樣做。

img = Image.open("withAlpha.png") 
p = img.load() 

for y in range(2): 
    for x in range(img.size[0]): 
     t = list(p[x,y]) 
     t[3] = 0 
     p[x,y] = tuple(t) 

img.save("result.png") 
+0

可愛,效果很好,謝謝。 – DizzyDoo

3

我會做下列方式:

img = Image.open("myimage.png") 
p = img.load() 
alpha = img.split()[-1] 
width, height = img.size 
for y in range(2): #First two rows 
    for x in range(width): #The whole row 
     alpha[x, y] = 0 
img.putalpha(alpha) 

我希望這個作品。

+1

它看起來應該工作!但是當我做img.split()時存在一個問題:文件「C:\ Python27 \ lib \ site-packages \ PIL \ Image.py」,行1497,分割爲 if self.im.bands == 1: AttributeError:'NoneType'對象沒有屬性'band'。圖像被正確加載(它不是沒有)。這裏可能會發生什麼? – DizzyDoo

+10

我想你必須添加一個'img.load'的調用,因爲Image.open是惰性的:)。 – halex