如何使用Python 3模組Pillow合併相同大小的影像?


Pillow 或 PIL 是一個強大的 Python 庫,用於處理和操作影像。影像處理中最常見的任務之一是將多張影像合併為單張影像。它提供了一系列用於載入、操作和儲存各種格式影像的功能。Pillow 的主要功能之一是支援影像合併。它支援各種影像,包括“jpeg”、“png”、“bmp”、“gif”、“ppm”、“tiff”。使用此模組,我們幾乎可以對數字影像做任何事情,例如基本的影像處理功能、點運算、使用內建卷積核過濾影像以及顏色空間轉換。

在本文中,我們將學習如何在 Python 3 中使用 Pillow 模組合併相同大小的影像。

但在開始之前,讓我們首先了解什麼是影像合併以及為什麼它很重要。影像合併是將兩張或更多影像組合成單張影像的過程。它通常用於建立全景圖、將多張影像合成到單個幀中或混合影像以建立新影像的應用程式。需要注意的是,為了合併影像,它們需要具有相同的大小。

使用 Pillow 合併相同大小影像的步驟

以下是使用 Python3 中的 Pillow 合併相同大小影像的步驟:

步驟 1:匯入所需的模組

首先,我們需要匯入所需的模組。在本例中,我們需要從 Pillow 庫匯入 Image 模組。

from PIL import Image

步驟 2:開啟影像

接下來,我們需要開啟要合併的影像。我們可以使用 Image.open() 方法來實現。此方法返回一個 Image 物件,我們可以用它來操作影像。

myimage1= Image.open('image1.jpg')
myimage1= Image.open('image2.jpg')

步驟 3:檢查影像的大小

在合併影像之前,我們需要確保影像具有相同的大小。我們可以使用 size 屬性檢查影像的大小。

if myimage1.size == myimage2.size:
   # continue with merging
else:
   print('The images must have the same size to merge them using Pillow!')

步驟 4:建立新影像

我們需要建立一個新影像來儲存合併後的影像。我們可以使用 Image.new() 方法來實現。此方法將新影像的模式和大小作為引數。

mymerged_image= Image.new('RGB', myimage1.size)

步驟 5:合併影像

最後,我們可以使用 Image.paste() 方法將一張影像貼上到另一張影像上,從而合併影像。我們需要指定要貼上影像的座標。

mymerged_image.paste(myimage1, (0, 0))
mymerged_image.paste(myimage2, (myimage1.size[0], 0))

步驟 6:儲存合併後的影像

我們可以使用 Image.save() 方法儲存合併後的影像。

mymerged_image.save(mymerged_image.jpg')

現在,您必須很好地理解如何使用 python3 模組 pillow 合併相同大小的影像。讓我們看看使用不同方法的一些詳細示例。

示例 1:水平合併影像

在下面,我們將水平合併兩張影像。第一張影像將在左側,第二張影像將在右側。

我們建立一個新的合併影像,其寬度等於其中一張輸入影像的寬度,高度等於兩張輸入影像高度的總和。在這裡,我們使用 Image.open() 方法讀取兩張輸入影像 myimage1 和 myimage2。

接下來,我們檢查兩張影像的大小是否相同。如果相同,我們使用 Image.new() 方法建立一個新影像。Image.new() 方法接受兩個引數:新影像的模式(在本例中為“RGB”)和新影像的大小(在本例中,新影像的寬度是兩張輸入影像寬度的總和,新影像的高度是其中一張輸入影像的高度)。

建立新影像後,我們使用 paste() 方法水平合併兩張輸入影像。paste() 方法接受兩個引數:要貼上的影像和貼上的位置。在本例中,我們將 image1 貼上在新影像的左上角 ((0, 0)),並將 myimage2 貼上在新影像的右上角 ((myimage1.size[0], 0))。最後,我們儲存了合併後的影像。

#import the PIL
from PIL import Image
# Open the images
myimage1 = Image.open('myimageone.jpg')
myimage2 = Image.open('myimagetwo.jpg')

# Checking the sizes of the images
if myimage1.size == myimage2.size:
   # Creatin a new image
   mymerged_image = Image.new('RGB', (myimage1.size[0], myimage1.size[1] + myimage1.size[1]))
   # Merging the images horizontally
   mymerged_image.paste(myimage1, (0, 0))
   mymerged_image.paste(myimage2, (myimage1.size[0], 0))
   # Saving the merged image
   mymerged_image.save('mymerged_image_horizontal.jpg')
else:
   print('The images must have the same size to merge them using Pillow')

輸出

輸入影像

輸出影像

示例 2:垂直合併影像

在下面的示例中,我們將垂直合併兩張影像。第一張影像將在頂部,第二張影像將在底部。

我們建立一個新影像,其寬度等於兩張輸入影像寬度的總和,高度等於其中一張輸入影像的高度。現在,使用 PIL 模組,我們將第一張影像貼上在新影像的左上角,並將第二張影像貼上在新影像的右上角。最後,我們儲存了合併後的影像。

#import the PIL
from PIL import Image

# Open the images
myimage1 = Image.open('myimageone.jpg')
myimage2 = Image.open('myimagetwo.jpg')

# Checking the sizes of the images
if myimage1.size == myimage2.size:
   # Creatin a new image
   mymerged_image = Image.new('RGB', (myimage1.size[0], myimage1.size[1] + myimage1.size[1]))

   # Merging the images vertically
   mymerged_image.paste(myimage1, (0, 0))
   mymerged_image.paste(myimage2, (0, myimage1.size[1]))

   # Saving the merged image
   mymerged_image.save('mymerged_image_vertical.jpg')
else:
   print('The images must have the same size to merge them using Pillow')

輸出

輸入影像

輸出影像

結論

在 Python 中,合併相同大小的影像是影像處理中的一項常見任務。在本文中,我們學習瞭如何使用 Python 3 模組 pillow 合併兩張相同大小的影像。我們看到了使用 Python 中的 Pillow 合併影像的完整步驟,以及水平和垂直合併影像的兩個完整示例。透過遵循這些步驟,您可以輕鬆地使用 Pillow 合併相同大小的影像。

更新於:2023年7月31日

340 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.