Maison  >  Article  >  développement back-end  >  Voici quelques titres basés sur des questions qui capturent l’essence de votre article : **Général:** * **Comment combiner des images horizontalement en Python : un guide étape par étape** * **Concaténation d'images en Python

Voici quelques titres basés sur des questions qui capturent l’essence de votre article : **Général:** * **Comment combiner des images horizontalement en Python : un guide étape par étape** * **Concaténation d'images en Python

DDD
DDDoriginal
2024-10-26 00:24:02404parcourir

Here are a few question-based titles that capture the essence of your article:

**General:**

* **How to Combine Images Horizontally in Python: A Step-by-Step Guide**
* **Concatenating Images in Python: A Comparative Analysis of Methods**
* **Seamless Ima

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn