code
|

如何使用 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')

Similar Posts

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *