如何使用 Python 將多張圖片合成一張圖片!三分鐘讓你知道!
最近在製作圖片的時候都要一張一張上傳然後再合併
就禿然想說可以用Python 自己抓圖合併嗎
沒想到還真的有!Pillow就是Python的一個套件,輕鬆就可以做到合併圖片
來看看怎麼做吧!
安裝 Pillow
我們要先安裝 Pillow
根據個人環境使用 pip 或 pip3,如果使用 Colab 或 Anaconda Jupyter,已經內建 Pillow 函式庫
pip install Pillow
產生新的空白圖片
使用 Pillow 函式庫裡 Image.new() 的方法,可以產生一張指定大小的圖片
mode 色彩模式,可使用 RGB 或 RGBA
size 長寬尺寸,tuple 格式 ( 寬, 長 )
color 顏色,預設黑色 #000000
from PIL import Image
img = Image.new(mode, size, color)
產生一張 400×300 背景全紅的圖片
from PIL import Image
bg = Image.new('RGB',(400, 300), '#ff0000') # 產生 RGB 色域,400x300 背景紅色的圖片
bg.save('test.jpg')
這邊儲存的圖片因為沒有指定路徑,所以會跟程式儲存在同一個地方
使用 paste 拼接多張圖片
產生一張空白的影像後,使用 for 迴圈的方式,依序開啟需要拼貼的圖片
透過 resize 改變圖片尺寸,再利用 paste 的方法將開啟的圖片,貼到空白的影像上
就可以實現拼接多張圖片的效果
from PIL import Image
bg = Image.new('RGB',(1200, 800), '#000000') # 產生一張 1200x800 的全黑圖片
for i in range(1,9):
img = Image.open('test{}.jpg' %(i)) # 開啟圖片 test1~test8
img = img.resize((300, 400)) # 縮小尺寸為 300x400
x = (i-1)%4 # 根據開啟的順序,決定 x 座標
y = (i-1)//4 # 根據開啟的順序,決定 y 座標 ( // 為快速取整數 )
bg.paste(img,(x*300, y*400)) # 貼上圖片
bg.save('test.jpg')
替拼接的圖片加上邊框
使用 Pillow ImageOps 模組裡的 expand 方法,能夠以指定的顏色,將影像的四個邊擴展出去,實現邊框的效果
from PIL import Image, ImageOps
bg = Image.new('RGB',(1200, 800), '#000000')
for i in range(1,9):
img = Image.open('test{}.jpg' %(i))
img = img.resize((260, 360)) # 因為擴張,縮小尺寸為 260, 360 留一部分給外框
img = ImageOps.expand(img, 20, '#ffffff') # 擴張邊緣,產生邊框
x = (i-1)%4
y = (i-1)//4
bg.paste(img,(x*300, y*400))
bg.save('test.jpg')