2017-02-13 3 views
0

Ich versuche, einen Screenshot zu machen und den Cursor darüber, aber wenn ich mein Programm ausführen das Ergebnis ist, dass der Cursor mit großen schwarzen Hintergrund eingefügt wurde, weiß jemand wie ich könnte der schwarze Hintergrund verschwinden?Einfügen von Bild ohne schwarzen Hintergrund mit Python hinzugefügt

Dies ist mein Code:

from PIL import Image 

im = Image.open("screenShot.png") 
mouse = Image.open(r"C:\Windows\Cursors\aero_arrow.cur") 
im.paste(mouse, (40,40)) #Drawing the cursor 
im.save("newImage.png") 

Antwort

0

Sie benötigen eine Maske angeben, so dass der schwarze Teil nicht wiedergegeben wird. Siehe docs:

im.paste(image, box, mask)

Same as above, but updates only the regions indicated by the mask. You can use either “1”, “L” or “RGBA” images (in the latter case, the alpha band is used as mask). Where the mask is 255, the given image is copied as is. Where the mask is 0, the current value is preserved. Intermediate values can be used for transparency effects.

Note that if you paste an “RGBA” image, the alpha band is ignored. You can work around this by using the same image as both source image and mask.

Der letzte Teil Ihrer Situation sein sollte.

Also in Ihrem Fall könnten Sie im.paste(mouse, (40,40), mouse) gegeben verwenden, dass das Bild bereits einen Alpha-Kanal

Edit:

Offenbar hat das Problem mit dem Format .cur zu tun. Wenn Sie mouse.getbands() eingeben, wird (R, G, B) zurückgegeben, daher die ValueError. Sie könnten die .cur-Datei in ein .png mit einem Alphakanal konvertieren, aber ich habe auch die Arbeit folgende bekommen:

mouse_mask = mouse.convert("L") 
im.paste(mouse, (40,40), mouse_mask) 
+0

ich schon versucht, diese vor, aber bekam Fehlermeldung von 'Valueerror: schlechte Transparenz mask' –

+0

@EyalS Ok, ich habe meine Antwort bearbeitet. Funktioniert das? –

+0

ja, danke! –

Verwandte Themen