J'ai fini par coder moi-même la suggestion de ce commentaire faite par l'utilisateur @ P.Melch et suggérée par @Mithril sur un projet sur lequel je travaille.
J'ai également codé la sécurité hors limites, voici le code pour cela . (J'ai lié un commit spécifique car les choses peuvent changer dans le futur de ce référentiel)
Remarque: J'attends des tableaux numpy des images comme np.array(Image.open(...))
les entrées A et B copy_from
et ces overlay
arguments de fonction liés .
Les dépendances sont la fonction juste avant elle, la copy_from
méthode et les tableaux numpy en tant que contenu d'image PIL pour le découpage.
Bien que le fichier soit très orienté classe, si vous souhaitez utiliser cette fonction overlay_transparent
, assurez-vous de renommer le self.frame
tableau numpy de votre image d'arrière-plan.
Ou vous pouvez simplement copier le fichier entier (supprimer probablement certaines importations et la Utils
classe) et interagir avec cette classe Frame comme ceci:
# Assuming you named the file frame.py in the same directory
from frame import Frame
background = Frame()
overlay = Frame()
background.load_from_path("your path here")
overlay.load_from_path("your path here")
background.overlay_transparent(overlay.frame, x=300, y=200)
Ensuite, vous avez votre background.frame
tableau composé superposé et alpha, vous pouvez en obtenir une image PIL avec overlayed = Image.fromarray(background.frame)
ou quelque chose comme:
overlayed = Frame()
overlayed.load_from_array(background.frame)
Ou tout background.save("save path")
comme cela prend directement de la self.frame
variable interne composée alpha .
Vous pouvez lire le fichier et trouver d'autres fonctions de Nice avec cette I mise en œuvre codée comme les méthodes get_rgb_frame_array
, resize_by_ratio
, resize_to_resolution
, rotate
, gaussian_blur
, transparency
, vignetting
:)
Vous voudrez probablement supprimer la resolve_pending
méthode car elle est spécifique à ce projet.
Heureux si je vous ai aidé, assurez-vous de vérifier le repo du projet dont je parle, cette question et ce fil m'ont beaucoup aidé sur le développement :)
;
à la fin de vos commandes en python: c'est moche ...