Comment faire un collage d’images en utilisant Python
Un collage est une belle façon de mettre en valeur des souvenirs et d’afficher des séries d’images. Les créateurs de collages en ligne peuvent poser des problèmes de sécurité et les applications hors ligne peuvent être coûteuses et ne pas offrir les fonctionnalités dont vous avez besoin.
En créant votre propre outil de création de collages d’images, vous éliminez ces problèmes et gardez le contrôle total. Alors, comment en créer un ?
Le module Tkinter et PIL
Pour créer une application de collage d’images, vous avez besoin de Tkinter et du module PIL. Tkinter vous permet de créer des applications de bureau. Il offre une variété de widgets qui facilitent le développement d’interfaces graphiques.
La bibliothèque Pillow – une branche de la bibliothèque d’imagerie Python (PIL) – offre des fonctionnalités de traitement d’images qui facilitent l’édition, la création, la conversion de formats de fichiers et l’enregistrement d’images.
Pour installer Tkinter et Pillow, ouvrez un terminal et exécutez :
Configuration de l’interface graphique et manipulation des images
Vous pouvez trouver le code source de ce projet dans son dépôt GitHub.
Commencez par importer les modules nécessaires. Créez une classe, ImageCollageApp et définissez le titre et les dimensions de la fenêtre. Définissez un canevas à l’aide de tk.Canvas() et définissez son élément parent, sa largeur, sa hauteur et sa couleur d’arrière-plan.
Créez deux boutons : Ajouter une image et Créer un collage. Définissez l’élément parent, le texte à afficher, la commande à exécuter et les styles de police. Organisez les boutons en ajoutant le rembourrage approprié. Initialiser drag_data pour stocker les informations relatives à l’opération de glissement.
Initialiser Positions de l’image pour stocker les positions des images sur le canevas. Définissez trois gestionnaires d’événements pour répondre à la sélection, au glissement et au relâchement des images.
Définissez une méthode, on_press. Récupérer l’élément de canevas le plus proche de l’endroit où l’utilisateur clique sur la souris et le stocker sous la rubrique item de l’élément drag_data du dictionnaire. Enregistre les coordonnées x et y du clic de la souris. Vous les utiliserez pour calculer la distance à laquelle l’utilisateur déplace la souris pendant le glissement.
Définissez une méthode, on_drag. Calculez la distance horizontale et verticale à laquelle l’utilisateur a déplacé la souris pendant le glissement et mettez à jour la position de l’image en conséquence. Enregistrez les coordonnées actualisées de l’image dans le fichier x et y des touches drag_data dictionnaire.
Définir une méthode, on_release. Effacez la référence à l’image que l’utilisateur faisait glisser ainsi que ses coordonnées. Appelez la méthode update_image_positions pour mettre à jour les positions de toutes les images sur le canevas après que l’utilisateur l’a fait glisser et l’a relâchée.
Définissez une méthode, update_image_positions. Effacer les positions_image et itère sur tous les éléments du canevas. Pour chaque élément, trouvez les coordonnées et ajoutez-les à la liste.
Définissez une méthode, add_images. Créez une boîte de dialogue qui invite l’utilisateur à saisir le nombre d’images pour le collage. Si l’utilisateur a fourni un nombre valide, ouvrez une boîte de dialogue de fichier qui permet uniquement à l’utilisateur de sélectionner des fichiers d’images. Une fois que l’utilisateur a sélectionné une ou plusieurs images, ouvrez chacune d’entre elles à l’aide de la fonction Pillow’s Image.open() de Pillow.
Appelez la méthode redimensionner l’image et crée une image compatible avec Tkinter PhotoImage. Ajoutez ceci à l’image image_refs et appeler la fonction update_canvas .
Définir une méthode, resize_image. Obtenir la largeur et la hauteur de l’image et calculer son rapport d’aspect. S’il est supérieur à un, fixez la nouvelle largeur à la moitié de la largeur du collage. Calculez la nouvelle hauteur correspondante tout en conservant le rapport d’aspect.
Si le rapport hauteur/largeur est inférieur à un, fixer la nouvelle hauteur à la moitié de la hauteur du collage. De même, calculez la largeur correspondante. Utilisez la largeur de Pillow redimensionner de Pillow pour renvoyer une image redimensionnée à l’aide des paramètres calculés.
Définir une méthode, update_canvas. Effacer tous les éléments et demander à l’utilisateur d’indiquer le nombre de lignes et de colonnes souhaité dans une boîte de dialogue de fichier. Régler la largeur et la hauteur du collage pour qu’elles correspondent à la moitié de la taille spécifiée pour le collage. Efface la liste des positions de l’image. Initialiser x et y à zéro, afin que vous puissiez garder une trace des décalages de position pour arranger les images en lignes et en colonnes.
Itérer sur les valeurs image_refs et crée une image sur le canevas en utilisant le décalage spécifié. Définissez l’ancrage sur Northwest de manière à positionner le coin supérieur gauche de l’image aux coordonnées spécifiées. Ajoutez ces coordonnées à la liste positions_image de l’image.
Mettez à jour la liste des x_offset pour ajouter la moitié de la largeur du collage, afin de préparer le placement de l’image suivante. Si le nombre d’images placées dans la ligne actuelle est un multiple du nombre de colonnes spécifié, définissez le paramètre x_offset à zéro. Cela indique le début d’une nouvelle ligne. Ajoutez la moitié de la hauteur du collage pour définir le paramètre y de la rangée suivante.
Création du collage et enregistrement
Définissez une méthode, create_collage. S’il n’y a pas d’images dans le collage, afficher un avertissement. Recueillez la largeur et la hauteur du collage. Créer un oreiller Image avec un fond blanc. Interrogez les images images et collez chaque image sur l’arrière-plan aux positions spécifiées.
Enregistrez le collage et affichez-le à l’aide de la visionneuse d’images par défaut.
Créez une instance de Tkinter et ImageCollage App de la classe Tkinter et ImageCollage App. La classe mainloop() indique à Python de lancer la boucle d’événements Tkinter et d’écouter les événements jusqu’à ce que vous fermiez la fenêtre.
Test de différentes fonctionnalités de l’outil de collage d’images
Lors de l’exécution du programme, une fenêtre apparaît avec deux boutons, Ajouter une image et Créer un collage. En cliquant sur le bouton Ajouter une image une boîte de dialogue demande le nombre d’images à coller. Lorsque vous entrez cinq images et que vous les sélectionnez, une autre boîte de dialogue apparaît. Elle demande le nombre de lignes suivi du nombre de colonnes.
Si vous entrez deux lignes et trois colonnes, la fenêtre organise les images selon une structure en grille.
L’aperçu donne la possibilité de faire glisser les images comme on le souhaite. En cliquant sur le bouton Créer un collage le programme enregistre l’image.
En visualisant l’image, vous pouvez confirmer que le programme a créé le collage avec succès.
Amélioration des fonctions de l’outil de collage d’images
Au lieu d’un format tabulaire, vous pouvez fournir différents modèles par défaut parmi lesquels l’utilisateur pourra choisir. Ajoutez des fonctions permettant de modifier la couleur d’arrière-plan, d’ajouter du texte, d’appliquer des filtres aux images et d’insérer des autocollants provenant d’Internet.
Tout en ajoutant ces fonctions, facilitez la modification du collage en offrant la possibilité d’annuler ou de refaire le collage. Laissez l’utilisateur recadrer, redimensionner et retourner les images à sa guise. Vous devriez également ajouter une option permettant d’enregistrer l’image dans le format souhaité.