[PYTHON] Que faire lorsqu'une partie de l'image d'arrière-plan devient transparente lorsque l'image transparente est combinée avec Oreiller

Préface

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.

environnement

Python 3.8.2 Pillow 7.2 Ubuntu 20.04 on WSL2

Image que vous souhaitez superposer à l'arrière-plan

Contexte (bg_cloudy.png) bg_cloudy.png

Image que vous souhaitez superposer (cloudy.png) cloudy.png

Cela a un problème en arrière-plan

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')

résultat

L'arrière-plan est également transparent dans la partie transparente de l'icône de nuage a.png

approche

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')

résultat

J'ai pu synthétiser comme prévu sans aucun problème dans la partie transparente. a.png

référence

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

Source de l'image

Image de nuages en arrière-plan https://www.priga.jp/ Image de nuage d'icône https://github.com/twitter/twemoji

Recommended Posts

Que faire lorsqu'une partie de l'image d'arrière-plan devient transparente lorsque l'image transparente est combinée avec Oreiller
Utilisez Pillow pour rendre l'image transparente et en superposer une partie seulement
Notez ce que vous voulez faire à l'avenir avec Razpai
[AWS] Que faire lorsque la commande ping provoque un "délai d'expiration"
Que faire lorsque le type de valeur est ambigu en Python?
Que faire lorsque le résultat téléchargé via scrapy est en anglais
Comment couper la partie inférieure droite de l'image avec Python OpenCV
Que faire lorsque l'avertissement "L'environnement est cohérent ..." apparaît dans l'environnement Anaconda
[Introduction à Python] Quelle est la méthode de répétition avec l'instruction continue?
Que faire lorsqu'un message d'avertissement est affiché dans la liste des pip
Que faire si vous obtenez un avertissement "Mauvaise plateforme Python" lors de l'utilisation de Python avec l'EDI NetBeans
[Python] Que faire en cas de violation de PEP8 lors du processus d'importation à partir du répertoire ajouté à sys.path
Que faire lorsque "Quelque chose est déjà en cours d'exécution sur le port 8000" s'affiche lorsque la commande de développement de Gatsby est exécutée.
Que faire quand une PermissionError dans tempfile.mkstemp se produit
[Python + OpenCV] Peignez la partie transparente de l'image en blanc
Exemple de ce qu'il faut faire lorsque l'exemple de script ne fonctionne pas (OpenCV-Python)
Comment afficher dans toute la fenêtre lors de la définition de l'image d'arrière-plan avec tkinter
Que faire si (base) est affiché au début du terminal Mac
L'arrière-plan des caractères de l'image texte est surexposé pour faciliter la lecture.
curl: (60) Que faire lorsque le certificat de l'émetteur n'est pas valide.
Que faire quand n'est pas dans le fichier sudoers. Cet incident sera signalé.
Que faire lorsque gdal_merge génère un fichier énorme
Que faire lorsque seule la fenêtre est affichée et que rien ne s'affiche dans le pygame
Que faire si la barre de progression n'est pas affichée dans tqdm de python
C'était un peu difficile de faire flacon avec la version docker de nginx-unit
[Art de la coquille] Seulement quand c'est un multiple de 3 et un nombre avec 3 devient stupide
Que faire si une erreur de communication se produit en raison du proxy lors de l'installation avec la gestion des packages de pip, npm, gem
[Introduction à Python] Quel est l'important "if __name__ == '__ main__':" lorsqu'il s'agit de modules?
Une note de malentendu lors de la tentative de chargement de l'intégralité du module self-made avec Python3
Qu'est-ce qu'un moteur de recommandation? Résumé des types
Le son émis par M. Tick sur le lieu de travail est ... J'ai réussi à le faire avec le code
Lors de la lecture d'une image avec SimpleITK, il y a un problème s'il y a du japonais dans le chemin
Que faire si l'image n'est pas affichée à l'aide de matplotlib etc. dans le conteneur Docker
Que faire lorsqu'un artefact manquant se produit dans un fichier jar qui n'est pas défini dans pom.xml
Ce qui semble être un modèle pour la partie d'entrée standard du pro de la concurrence en python3
Lorsqu'une chaîne de caractères d'une certaine série se trouve dans la clé du dictionnaire, la chaîne de caractères est convertie en valeur du dictionnaire.
[AWS] Que faire lorsque vous souhaitez piper avec Lambda
Procédures à suivre lorsque le japonais n'est pas affiché dans matplotlib
Que faire lorsque la police PyCharm est étrange ou déformée
Que faire lorsqu'une erreur de suppression se produit lors de la mise à jour de conda
J'ai fait une image ponctuelle de l'image d'Irasutoya. (partie 1)
Que faire lorsqu'une erreur se produit avec import _ssl
J'ai fait une image ponctuelle de l'image d'Irasutoya. (partie 2)
Y a-t-il un secret dans la fréquence des nombres de rapport de circonférence?
L'image est Namekuji
Que faire si vous obtenez `locale.Error: unsupported locale setting` lors de l'obtention de la date du jour en Python
Lors de la génération d'un grand nombre de graphiques avec matplotlib, je ne souhaite pas afficher le graphique à l'écran (environnement jupyter)
Que faites-vous avec la gestion de la configuration d'un serveur qui a été implémenté Ansible mais qui est déjà en cours d'exécution? Je rencontre le problème
[Python] Qu'est-ce qu'une tranche? Une explication facile à comprendre de son utilisation avec un exemple concret
[Pour les débutants en informatique] Que faire lorsque la commande rev ne peut pas être utilisée avec Git Bash
[Django] Que faire quand il y a de nombreux champs dans le modèle que vous souhaitez créer
Aiguille en or pour quand elle devient une pierre en regardant la formule du traitement d'image
Trouvez la valeur optimale de la fonction à l'aide d'un algorithme génétique (partie 2)
[Statistiques] Saisir l'image de la théorie de la limitation du pôle central avec un graphe
Quand il est difficile de copier ce que vous avez construit avec vue
Que faire lorsqu'une vidéo ne peut pas être lue par cv2.VideoCapture
[Beanstalk] Que faire lorsqu'une erreur se produit avec import uuid
[Introduction à StyleGAN] J'ai joué avec "The Life of a Man" ♬
Que faire lorsque les paramètres de l'extension jupyterlab ne sont pas reflétés
[Go] Créez une commande CLI pour changer l'extension de l'image