Erster Parameter zu .paste() ist das einzufügende Bild. An zweiter Stelle stehen die Koordinaten, und die geheime Sauce ist der dritte Parameter. Es zeigt a Maske die zum Einfügen des Bildes verwendet wird. Wenn Sie ein Bild mit Transparenz übergeben, wird der Alphakanal als Maske verwendet.
BEARBEITEN: Beide Bilder müssen vom Typ RGBA sein. Sie müssen also anrufen convert('RGBA') wenn sie palettiert sind usw. Wenn der Hintergrund keinen Alphakanal hat, können Sie die normale Einfügemethode verwenden (die schneller sein sollte).
Ich habe gerade paste() verwendet, um ein halbtransparentes Bild mit PIL über ein anderes zu legen, und es hat wie erwartet funktioniert. Inwiefern funktioniert es nicht wie erwartet?
– Peter Hansen
25. Juli 13 um 17:27 Uhr
@PeterHansen, paste() funktioniert nicht wie erwartet, “wenn das Hintergrundbild auch Transparenz enthält”.
@homm danke. Das ist so lange her, dass ich mich nicht daran erinnern kann, was ich versucht habe. Es ist wahrscheinlich, dass ich den von Ihnen zitierten Teil über das Hintergrundbild mit Transparenz verpasst habe.
– Peter Hansen
5. November 14 um 19:58 Uhr
Ich bekomme ValueError: image has wrong made sowie @DenizOzger
– digitaldavenyc
11. Oktober 16 um 20:55 Uhr
Wie alt bereits darauf hingewiesen, Image.paste funktioniert nicht richtig, wenn source und Ziel enthalten beide Alpha.
erzeugt das folgende Bild (der Alpha-Teil der überlagerten roten Pixel wird vollständig von der 2. Ebene übernommen. Die Pixel werden nicht korrekt gemischt):
Zusammensetzen von Bildern mit Image.alpha_composite so:
Aber alpha_composite kann den Offset nicht einstellen, hättest du etwas dagegen, ein Beispiel zu geben, um ihn komplett zu ersetzen paste Funktion?
– Mithril
10. Juli 17 um 08:03 Uhr
Ich denke, Sie müssten ein neues leeres Bild mit der gleichen Größe wie das Garget-Bild erstellen, die Ebene an der richtigen Position einfügen und alpha_compositing verwenden, um das neue Bild über das Zielbild zu mischen.
– P. Melch
11. Juli 17 um 15:24 Uhr
Ich erhalte: ValueError: Bilder stimmen nicht überein
Hatte eine ähnliche Frage und hatte Schwierigkeiten, eine Antwort zu finden. Mit der folgenden Funktion können Sie ein Bild mit einem Transparenzparameter über einem anderen Bild mit einem bestimmten Versatz einfügen.
Hier ist mein Code zum Zusammenführen von 2 Bildern unterschiedlicher Größe, jeweils mit Transparenz und mit Offset:
from PIL import Image
background = Image.open('image1.png')
foreground = Image.open("image2.png")
x = background.size[0]//2
y = background.size[1]//2
background = Image.alpha_composite(
Image.new("RGBA", background.size),
background.convert('RGBA')
)
background.paste(
foreground,
(x, y),
foreground
)
background.show()
Dieses Snippet ist eine Mischung aus den vorherigen Antworten, wobei Elemente mit Offset gemischt werden, während Bilder mit unterschiedlichen Größen, jeweils mit Transparenz, verarbeitet werden.
.
7398100cookie-checkSo verschmelzen Sie ein transparentes PNG-Bild mit einem anderen Bild mit PILyes
Nicht verwenden
;
am Ende Ihrer Befehle in Python: Es ist hässlich …– nosklo
16. März 11 um 11:48 Uhr
Das werde ich mir merken, danke!!
– Arackna
16. März 11 um 12:39 Uhr