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