如何在 Python 中水平連接圖像:快速指南

Barbara Streisand
發布: 2024-10-26 09:41:02
原創
314 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板