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.
Python 3.8.2 Pillow 7.2 Ubuntu 20.04 on WSL2
Hintergrund (bg_cloudy.png)
Bild, das Sie überlagern möchten (cloudy.png)
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')
Der Hintergrund ist auch im transparenten Teil des Cloud-Symbols transparent
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')
Ich konnte im transparenten Teil problemlos wie vorgesehen synthetisieren.
Bild der Wolken im Hintergrund https://www.priga.jp/ Symbol Wolkenbild https://github.com/twitter/twemoji
Recommended Posts