1

Ich versuche, die schwarzen Pixel im Hintergrund eines Bildes transparent zu machen. Dazu habe ich die folgende Funktion geschrieben. Ich überlagere dann das Bild (ein Auto in der Mitte, umgeben von schwarzen Pixeln) auf einer Kopie von sich selbst und bewege das erste langsam. Ich hatte erwartet, dass das erste Bild die darunter liegende Kopie enthüllen würde, ohne die rechteckige Grenze zu zeigen, da dieser Teil transparent sein sollte. Allerdings bekomme ich nicht den gewünschten Effekt. Weiß jemand was ich vermisse?PIL Transparenz scheint nicht zu funktionieren

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 

Antwort

1

Ich kann nicht herausfinden, wie die Transparenz der Arbeit zu machen, so dass ich nur meine eigene Paste-Methode erstellt, die die Bytes des Bildes aktualisierten I Einfügen direkt war und das hat mir den gewünschten Effekt.

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] 
Verwandte Themen