首页  >  文章  >  后端开发  >  如何在 Python 中水平连接图像:快速指南

如何在 Python 中水平连接图像:快速指南

Barbara Streisand
Barbara Streisand原创
2024-10-26 09:41:02231浏览

How to Concatenate Images Horizontally in Python: A Quick Guide

使用 Python 水平连接图像

本文旨在解决使用 Python 水平组合多个 JPEG 图像的挑战。

问题陈述

考虑一个场景,其中三个图像(每个图像的尺寸为 148 x 95)需要水平连接以形成单个图像。之前使用以下代码的尝试遇到了问题:

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

建议的解决方案

为了解决该问题,下面提供了改进的代码:

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

该解决方案包括以下关键修正:

  • 使用 zip(*(i.size for i in images)) 来确定组合图像的整体宽度和高度
  • 用迭代列表中每个图像的简化循环替换有问题的嵌套循环
  • 根据每个图像的宽度调整粘贴位置,以避免意外重叠。

避免硬编码图像尺寸和在单行中指定尺寸的规定(均在附加信息中提到)是改进代码所固有的。

说明

更新后的代码首先计算所有输入图像的宽度和高度,并使用这些值来确定输出图像的总宽度和最大高度。

接下来,它会创建一个具有计算尺寸的空白图像。

然后,它迭代每个输入图像,将每个图像以适当的 x 偏移量(从 0 开始)粘贴到空白图像上,并在每次粘贴后递增 x 偏移量,为下一个图像让路。

最后,将组合后的图像保存为指定的文件名。

以上是如何在 Python 中水平连接图像:快速指南的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn