PIL 透明度似乎不起作用
PIL transparency doesn't seem to work
我正在尝试使图像背景中的黑色像素透明。为此,我编写了下面的函数。然后我将图像(中间的一辆汽车被黑色像素包围)覆盖在自身的副本上并缓慢移动第一个。我期待第一张图片显示下面的副本而不显示矩形边界,因为该部分应该是透明的。但是,我没有得到预期的效果。有谁知道我错过了什么?
def makeImageTransparent(img):
img = img.convert("RGBA")
datas = img.getdata()
newData = []
ii = 0
for item in datas:
if item[0] == 0 and item[1] == 0 and item[2] == 0:
newData.append((0, 0, 0, 0))
ii = ii + 1
else:
newData.append(item)
print str(ii)
img.putdata(newData)
return img
我不知道如何使透明度起作用,所以我只是创建了自己的粘贴方法来更新我直接粘贴到的图像的字节,这得到了我想要的效果。
def pasteImage(img, bigim, posn):
pixdata = img.load()
width, height = img.size
mainpixdata = bigim.load()
for y in xrange(height):
for x in xrange(width):
if pixdata[x, y] != (0, 0, 0, 0):
mainpixdata[x+posn[0], y+posn[1]] = pixdata[x,y]
我正在尝试使图像背景中的黑色像素透明。为此,我编写了下面的函数。然后我将图像(中间的一辆汽车被黑色像素包围)覆盖在自身的副本上并缓慢移动第一个。我期待第一张图片显示下面的副本而不显示矩形边界,因为该部分应该是透明的。但是,我没有得到预期的效果。有谁知道我错过了什么?
def makeImageTransparent(img):
img = img.convert("RGBA")
datas = img.getdata()
newData = []
ii = 0
for item in datas:
if item[0] == 0 and item[1] == 0 and item[2] == 0:
newData.append((0, 0, 0, 0))
ii = ii + 1
else:
newData.append(item)
print str(ii)
img.putdata(newData)
return img
我不知道如何使透明度起作用,所以我只是创建了自己的粘贴方法来更新我直接粘贴到的图像的字节,这得到了我想要的效果。
def pasteImage(img, bigim, posn):
pixdata = img.load()
width, height = img.size
mainpixdata = bigim.load()
for y in xrange(height):
for x in xrange(width):
if pixdata[x, y] != (0, 0, 0, 0):
mainpixdata[x+posn[0], y+posn[1]] = pixdata[x,y]