使用 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>
该解决方案包括以下关键修正:
避免硬编码图像尺寸和在单行中指定尺寸的规定(均在附加信息中提到)是改进代码所固有的。
说明
更新后的代码首先计算所有输入图像的宽度和高度,并使用这些值来确定输出图像的总宽度和最大高度。
接下来,它会创建一个具有计算尺寸的空白图像。
然后,它迭代每个输入图像,将每个图像以适当的 x 偏移量(从 0 开始)粘贴到空白图像上,并在每次粘贴后递增 x 偏移量,为下一个图像让路。
最后,将组合后的图像保存为指定的文件名。
以上是如何在 Python 中水平连接图像:快速指南的详细内容。更多信息请关注PHP中文网其他相关文章!