Maison >développement back-end >Tutoriel Python >Comment concaténer des images horizontalement en Python : un guide rapide

Comment concaténer des images horizontalement en Python : un guide rapide

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 09:41:02322parcourir

How to Concatenate Images Horizontally in Python: A Quick Guide

Concaténation d'images horizontalement avec Python

Cet article vise à relever le défi de la combinaison horizontale de plusieurs images JPEG à l'aide de Python.

Énoncé du problème

Considérons un scénario dans lequel trois images, chacune ayant des dimensions de 148 x 95, doivent être jointes horizontalement pour former une seule image. Une tentative précédente utilisant le code suivant a rencontré des problèmes :

<code class="python">import sys
from PIL import Image

list_im = ['Test1.jpg','Test2.jpg','Test3.jpg']

new_im = Image.new('RGB', (444,95))

for elem in list_im:
    for i in xrange(0,444,95):
        im=Image.open(elem)
        new_im.paste(im, (i,0))
new_im.save('test.jpg')</code>

Solution proposée

Pour résoudre le problème, un code amélioré est fourni ci-dessous :

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

La solution comprend les modifications clés suivantes :

  • L'utilisation de zip(*(i.size for i in images)) pour déterminer la largeur et la hauteur totales de l'image combinée
  • Remplacement de la boucle imbriquée problématique par une boucle simplifiée qui parcourt chaque image de la liste
  • Ajustement de la position de collage en fonction de la largeur de chaque image pour éviter les chevauchements accidentels.

Les dispositions visant à éviter de coder en dur les dimensions de l'image et à spécifier les dimensions sur une seule ligne (toutes deux mentionnées dans les informations supplémentaires) sont inhérentes au code amélioré.

Explication

Le code mis à jour calcule d'abord les largeurs et les hauteurs de toutes les images d'entrée et utilise ces valeurs pour déterminer la largeur totale et la hauteur maximale de l'image de sortie.

Ensuite, il crée une image vierge avec les dimensions calculées.

Ensuite, il parcourt chaque image d'entrée, en collant chacune sur l'image vierge au décalage x approprié (en commençant à 0) et en incrémentant le décalage x après chaque collage pour laisser la place à l'image suivante.

Enfin, l'image combinée est enregistrée sous un nom de fichier spécifié.

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