Lorsque vous utilisez Pillow pour superposer des images PNG de différentes tailles avec ʻimg.paste`, le phénomène selon lequel la transparence de la couche supérieure pénètre dans la couche inférieure et l'arrière-plan est partiellement perdu s'est produit, donc un mémo sur la façon de le gérer.
Python 3.8.2 Pillow 7.2 Ubuntu 20.04 on WSL2
Contexte (bg_cloudy.png)
Image que vous souhaitez superposer (cloudy.png)
Cependant, si vous essayez de superposer ʻimg avec
bg.paste`, il expirera.
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')
L'arrière-plan est également transparent dans la partie transparente de l'icône de nuage
Cela peut être évité en utilisant ʻImage.alpha_composite (bg, img) `. Cependant, étant donné que la taille de l'image du premier argument et celle du deuxième argument doivent correspondre, collez-la à la position spécifiée sur l'image transparente sans rien qui ait la même taille que l'arrière-plan, puis superposez-la. Faire.
from PIL import Image
bg = Image.open('bg_cloudy.png').convert('RGBA')
img = Image.open('cloudy.png').convert('RGBA')
#Générer une image transparente de la même taille que l'arrière-plan
img_clear = Image.new("RGBA", bg.size, (255, 255, 255, 0))
#Coller au-dessus de l'image transparente
img_clear.paste(img, (232, 412))
#Recouvrir
bg = Image.alpha_composite(bg, img_clear)
bg.save('a.png')
J'ai pu synthétiser comme prévu sans aucun problème dans la partie transparente.
Image de nuages en arrière-plan https://www.priga.jp/ Image de nuage d'icône https://github.com/twitter/twemoji
Recommended Posts