Maison >développement back-end >Tutoriel Python >Comment concaténer des images horizontalement en Python : un guide rapide
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 :
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!