1

我试图使背景中的黑色像素透明。为此,我写了下面的函数。然后我在自己的副本上覆盖图像(中间有黑色像素包围的汽车),并缓慢移动第一个图像。我期待第一张图像能够显示下面的副本,而不显示矩形边界,因为该部分应该是透明的。但是,我没有得到预期的效果。有谁知道我错过了什么?PIL透明度似乎不起作用

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 

回答

1

我无法弄清楚如何使透明度的工作,所以我只是创建了更新我粘贴直接,这让我想要的效果的图像的字节我自己的贴法。

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]