Ich versuche, ein zusammengesetztes Bild von einem JPEG-Foto (1600x900) und ein PNG-Logo mit Alpha-Kanal (400x62) zu machen.PIL: PNG-Bild als Wasserzeichen für ein JPG-Bild
Dies ist ein Befehl, der den Job mit Image Magick tut:
composite -geometry +25+25 watermark.png original_photo.jpg watermarked_photo.jpg
Jetzt würde ich etwas ähnliches in einem Python-Skript zu tun, ohne von außen diesen Shell-Befehl aufgerufen wird, mit PIL.
Hier ist, was ich versuchte:
photo = Image.open('original_photo.jpg')
watermark = Image.open('watermark.png')
photo.paste(watermark, (25, 25))
Das Problem hierbei ist, dass der Alpha-Kanal vollständig ignoriert wird und das Ergebnis ist, als ob mein Wasserzeichen als rbga(0, 0, 0, 0)
schwarz und weiß eher war und rbga(255, 255, 255, 128)
.
Tatsächlich PIL docs state: "Siehe alpha_composite(), wenn Sie Bilder in Bezug auf ihre Alpha-Kanäle kombinieren möchten."
Also schaute ich auf alpha_composite()
. Leider erfordert diese Funktion, dass beide Bilder dieselbe Größe und denselben Modus haben.