Combinaison d'images horizontalement avec Python
Python offre de puissantes capacités de traitement d'image, y compris la possibilité de combiner plusieurs images horizontalement. Cet article aborde les défis rencontrés lors de la tentative de joindre trois images JPEG, garantissant un alignement correct et des transitions fluides.
Aperçu du problème
L'objectif est de concaténer horizontalement trois images, chacun mesurant 148 x 95 pixels. Le résultat souhaité est une image unique où les trois sous-images sont fusionnées de manière transparente.
Tentative initiale
L'approche initiale utilisait une boucle imbriquée dans une boucle for et la Méthode Image.paste() pour coller chaque image dans un canevas nouvellement créé. Cependant, des images partielles étaient visibles dans la sortie.
Mise en œuvre d'une solution révisée
Pour remédier au problème, une approche plus efficace a été développée, tirant parti de l'image Méthodes .open() et Image.size() pour obtenir les dimensions de l’image et ajuster dynamiquement la nouvelle taille de l’image. Le code est le suivant :
<code class="python">import sys from PIL import Image images = [Image.open(x) for x in ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']] widths, heights = zip(*(i.size for i in images)) total_width = sum(widths) max_height = max(heights) new_im = Image.new('RGB', (total_width, max_height)) x_offset = 0 for im in images: new_im.paste(im, (x_offset,0)) x_offset += im.size[0] new_im.save('test.jpg')</code>
Résultats
La solution révisée a réussi à combiner les images horizontalement, produisant le résultat attendu :
Test1.jpg Test2.jpg Test3.jpg ──────▄▄██▀▀▀▀▄──────────▄▄██▀▀▀▀▄──────────▄▄██▀▀▀▀▄ ─────█▒▒░██▄▒▒▒█───────█▒▒░█████▒█───────█▒▒░█████▒█ ───▄████▒▒████▒▒██▄──▄████▒▒████▒▒██▄──▄████▒▒████▒▒██▄ ───██▒▒▒█▒▒▒█▒▒▒█▒▒██─██▒▒▒█▒▒▒█▒▒▒█▒▒██─██▒▒▒█▒▒▒█▒▒▒█▒▒██ ──██▒▒▒▒▒█▒▒▒▒▒█▒▒▒▒██─██▒▒▒▒▒█▒▒▒▒▒█▒▒▒▒██─██▒▒▒▒▒█▒▒▒▒▒█▒▒▒▒██ ─██▒▒▒▒▒▒▒█▒▒▒▒▒█▒▒▒▒▒▒██▒▒▒▒▒▒▒█▒▒▒▒▒█▒▒▒▒▒▒██▒▒▒▒▒▒▒█▒▒▒▒▒█▒▒▒▒▒▒█─ ██▒▒▒▒▒▒▒▒▒█▒▒▒▒▒█▒▒▒▒▒▒██▒▒▒▒▒▒▒█▒▒▒▒▒█▒▒▒▒▒▒██▒▒▒▒▒▒▒█▒▒▒▒▒█▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒█▒▒▒▒▒█▒▒▒▒▒▒██▒▒▒▒▒▒▒█▒▒▒▒▒█▒▒▒▒▒▒██▒▒▒▒▒▒▒█▒▒▒▒▒█▒▒▒▒▒▒▒██ ─██▒▒▒▒▒▒▒█▒▒▒▒▒█▒▒▒▒▒▒████▒▒▒▒▒▒▒█▒▒▒▒▒█▒▒▒▒████▒▒▒▒▒▒▒█▒▒▒▒▒█▒▒▒▒▒▒█─ ───██▒▒▒█▒▒▒█▒▒▒█▒▒█████▒▒▒█▒▒▒█▒▒▒█▒▒█████▒▒▒█▒▒▒█▒▒▒█▒▒▒█▒▒▒█▒▒▒█─── ───▄████▒▒▒█▒▒▒█▒▒▒█████▒▒█████▒▒▒█▒▒▒█████▒▒█████▒▒▒█▒▒▒█▒▒▒█▒▒████▄─── ─────█▒▒▒████▒█▒▒▒▒▒▒████▒▒▒████▒▒█▒▒▒▒▒▒████▒▒▒████▒▒████▒▒▒▒▒█▒▒▒█───── ─────────▐▒▒▒█▒▒▒▒▒▒▒▒▒▒▒▒█▒▒▒▒▒▒▒█▒▒▒▒▒▒▒▒▒▒▒▒▒█▒▒▒▒▒▒▒█▒▒▒▒▒▒▒█────────── ──────────▀▒▒█▒▒▒▒▒▒▒▒▒▒▒▒▒█▒▒▒▒▒▒▒█▒▒▒▒▒▒▒▒▒▒▒▒▒█▒▒▒▒▒▒▒█▒▒▒▒▒▒▒█───────────
Cette solution améliorée a concaténé efficacement les trois images, évitant ainsi le problème de l'affichage d'images partielles supplémentaires. Il offre un moyen dynamique et personnalisable de fusionner plusieurs images horizontalement, ce qui le rend adapté aux tâches de traitement d'images générales.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!