[PYTHON] Was tun, wenn ein Teil des Hintergrundbilds transparent wird, wenn Sie transparente Bilder mit Pillow kombinieren?

Vorwort

Bei Verwendung von Pillow zum Überlagern von PNG-Bildern unterschiedlicher Größe mit "img.paste" trat das Phänomen auf, dass die Transparenz der oberen Schicht in die untere Schicht eindringt und der Hintergrund teilweise verloren geht.

Umgebung

Python 3.8.2 Pillow 7.2 Ubuntu 20.04 on WSL2

Bild, das Sie mit dem Hintergrund überlagern möchten

Hintergrund (bg_cloudy.png) bg_cloudy.png

Bild, das Sie überlagern möchten (cloudy.png) cloudy.png

Dies hat ein Problem im Hintergrund

Wenn Sie jedoch versuchen, "img" mit "bg.paste" zu überlappen, läuft es ab.

from PIL import Image

bg = Image.open('bg_cloudy.png').convert('RGBA')
img = Image.open('cloudy.png').convert('RGBA')

bg.paste(img, (232, 412))

bg.save('a.png')

Ergebnis

Der Hintergrund ist auch im transparenten Teil des Cloud-Symbols transparent a.png

Ansatz

Dies kann durch Verwendung von "Image.alpha_composite (bg, img)" vermieden werden. Da jedoch die Größe des Bildes des ersten Arguments und des Bildes des zweiten Arguments übereinstimmen muss, fügen Sie es an der angegebenen Position in das transparente Bild ein, ohne dass es dieselbe Größe wie der Hintergrund hat, und überlagern Sie es dann. Machen.

from PIL import Image

bg = Image.open('bg_cloudy.png').convert('RGBA')
img = Image.open('cloudy.png').convert('RGBA')

#Generieren Sie ein transparentes Bild mit der gleichen Größe wie der Hintergrund
img_clear = Image.new("RGBA", bg.size, (255, 255, 255, 0))

#Über das transparente Bild einfügen
img_clear.paste(img, (232, 412))

#Überlagerung
bg = Image.alpha_composite(bg, img_clear)

bg.save('a.png')

Ergebnis

Ich konnte im transparenten Teil problemlos wie vorgesehen synthetisieren. a.png

Referenz

https://www.it-swarm.dev/

Bildquelle

Bild der Wolken im Hintergrund https://www.priga.jp/ Symbol Wolkenbild https://github.com/twitter/twemoji

Recommended Posts

Was tun, wenn ein Teil des Hintergrundbilds transparent wird, wenn Sie transparente Bilder mit Pillow kombinieren?
Verwenden Sie Pillow, um das Bild transparent zu machen und nur einen Teil davon zu überlagern
Notieren Sie sich, was Sie in Zukunft mit Razpai machen möchten
[AWS] Was tun, wenn der Ping-Befehl eine "Zeitüberschreitung" verursacht?
Was tun, wenn der Werttyp in Python nicht eindeutig ist?
Was tun, wenn das über Scrapy heruntergeladene Ergebnis auf Englisch ist?
So schneiden Sie den unteren rechten Teil des Bildes mit Python OpenCV
Was tun, wenn in der Anaconda-Umgebung die Warnung "Die Umgebung ist konsistent ..." angezeigt wird
[Einführung in Python] Wie wird mit der continue-Anweisung wiederholt?
Was tun, wenn eine Warnmeldung in der Pip-Liste angezeigt wird?
Was tun, wenn bei Verwendung von Python mit der NetBeans-IDE die Warnung "Falsche Python-Plattform" angezeigt wird?
[Python] Was tun, wenn beim Importieren aus dem zu sys.path hinzugefügten Verzeichnis gegen PEP8 verstoßen wird?
Was ist zu tun, wenn "Etwas läuft bereits an Port 8000" angezeigt wird, wenn der Entwicklungsbefehl von Gatsby ausgeführt wird.
Was tun, wenn ein PermissionError in tempfile.mkstemp auftritt?
[Python + OpenCV] Malen Sie den transparenten Teil des Bildes weiß
Beispiel, was zu tun ist, wenn das Beispielskript nicht funktioniert (OpenCV-Python)
So zeigen Sie im gesamten Fenster an, wenn Sie das Hintergrundbild mit tkinter einstellen
Was tun, wenn (Basis) am Anfang des Mac-Terminals angezeigt wird?
Der Hintergrund der Zeichen im Textbild ist überbelichtet, um das Lesen zu erleichtern.
curl: (60) Was tun, wenn das Ausstellerzertifikat ungültig ist?
Was zu tun ist, wenn es nicht in der Sudoers-Datei enthalten ist. Dieser Vorfall wird gemeldet.
Was tun, wenn gdal_merge eine große Datei generiert?
Was tun, wenn nur das Fenster angezeigt wird und im Pygame nichts angezeigt wird?
Was tun, wenn der Fortschrittsbalken in tqdm von Python nicht angezeigt wird?
Mit der Docker-Version der Nginx-Einheit war es ein wenig schwierig, eine Flasche zu machen
[Shell Art] Nur wenn es ein Vielfaches von 3 ist und eine Zahl mit 3 dumm wird
Was tun, wenn bei der Installation mit Paketverwaltung von pip, npm, gem ein Kommunikationsfehler aufgrund eines Proxys auftritt?
[Einführung in Python] Was ist das wichtige "if __name__ == '__ main__':" beim Umgang mit Modulen?
Ein Hinweis auf Missverständnisse beim Versuch, das gesamte selbst erstellte Modul mit Python3 zu laden
Was ist ein empfohlener Motor? Zusammenfassung der Typen
Das Geräusch von Mr. Tick am Arbeitsplatz ist ... Ich habe es mit dem Code geschafft
Beim Lesen eines Bildes mit SimpleITK tritt ein Problem auf, wenn sich Japanisch im Pfad befindet
Was tun, wenn das Bild nicht mit matplotlib usw. im Docker-Container angezeigt wird?
Was tun, wenn ein nicht in pom.xml definiertes Glas zu einem fehlenden Artefakt wird?
Was scheint eine Vorlage für den Standardeingabe-Teil des Competition Pro in Python3 zu sein
Wenn sich eine Zeichenfolge einer bestimmten Reihe im Schlüssel des Wörterbuchs befindet, wird die Zeichenfolge in den Wert des Wörterbuchs konvertiert.
[AWS] Was tun, wenn Sie mit Lambda pfeifen möchten?
Verfahren, die durchgeführt werden müssen, wenn Japanisch nicht in matplotlib angezeigt wird
Was tun, wenn die PyCharm-Schrift seltsam oder verstümmelt ist?
Was tun, wenn beim Aktualisieren von conda ein Fehler beim Entfernen auftritt?
Ich habe ein Punktbild des Bildes von Irasutoya gemacht. (Teil 1)
Was tun, wenn beim Importieren von _ssl ein Fehler auftritt?
Ich habe ein Punktbild des Bildes von Irasutoya gemacht. (Teil 2)
Gibt es ein Geheimnis in der Häufigkeit der Umfangszahlen?
Das Bild ist Namekuji
Was tun, wenn Sie "locale.Error: nicht unterstützte Gebietsschemaeinstellung" erhalten, wenn Sie den Tag vom Datum in Python abrufen?
Wenn ich mit matplotlib eine große Anzahl von Diagrammen generiere, möchte ich das Diagramm nicht auf dem Bildschirm anzeigen (Jupyter-Umgebung).
Was machen Sie mit der Konfigurationsverwaltung eines Servers, der Ansible implementiert hat, aber bereits ausgeführt wird? Ich treffe das Problem
[Python] Was ist ein Slice? Eine leicht verständliche Erklärung zur Verwendung anhand eines konkreten Beispiels
[Für IT-Anfänger] Was tun, wenn der Befehl rev nicht mit Git Bash verwendet werden kann?
[Django] Was tun, wenn das zu erstellende Modell viele Felder enthält?
Goldnadel für den Fall, dass sie zu einem Stein wird, wenn man sich die Formel der Bildverarbeitung ansieht
Finden Sie den optimalen Wert der Funktion mit einem genetischen Algorithmus (Teil 2)
[Statistik] Erfassen Sie das Bild der zentralen Polbegrenzungstheorie mit einem Diagramm
Wenn es schwierig ist, das zu kopieren, was Sie mit vue erstellt haben
Was tun, wenn ein Video von cv2.VideoCapture nicht gelesen werden kann?
[Beanstalk] Was tun, wenn beim Importieren der UUID ein Fehler auftritt?
[Einführung in StyleGAN] Ich habe mit "The Life of a Man" ♬ gespielt
Was tun, wenn die Einstellungen der jupyterlab-Erweiterung nicht angezeigt werden?
[Los] Erstellen Sie einen CLI-Befehl, um die Erweiterung des Bildes zu ändern