Skip to content

[Python] 使用 Pillow 套件來進行圖片剪切

Last Updated on 2021-04-13 by Clay

今天在進行自己的 Side Project 時遇到了需要大量剪切圖片的情況。所幸,那些圖片幾乎都是 1920 x 1080 的尺寸,所以我可以比較固定地剪取特定的區域。

隨著進行的影像處理的工作越來越多,越來越喜歡 Pillow。有空我想要寫一篇詳細點的筆記,今天只紀錄該如何剪取圖片。


Pillow

Pilliow 是一個 Python 可以調用的『影像處理』的套件。若是要第一次使用,要用以下指令安裝:

pip3 install Pillow

安裝好之後,我們就可以用 Python 來呼叫 Pillow 啦。

假設我一張以下這樣的圖片:

然後我的目標,是要將中央的怪物圖示擷取出來,另存成為一張新的圖片。

首先,我推薦打開小畫家查看『要擷取範圍』的 (x, y) 座標。當然,如果你有其他方法可以查看座標,那當然是很好的。

左下角會顯示滑鼠位置的座標,這樣我們就可以查看想要擷取範圍的座標了。

就像這樣。

那麼,以下是一段 sample code:

# -*- coding: utf-8 -*-
import os
import re
from PIL import Image

picList = os.listdir('pic')
for pic in picList:
    if '01.png' not in pic: continue
    image = Image.open('pic/{}'.format(pic))

    # Crop
    newImage = image.crop((780, 310, 1080, 610))
    newImage.show()

    exit()


首先,我們要使用 from PIL import Image 來匯入 Pillow 套件我們要使用的部份。

底下,我將我 pic 資料夾底下的所有檔案名稱存入 picList,然後用 for 迴圈讀出來。

為了示範,這裡只有讀取第一張就結束了。

    # Crop
    newImage = image.crop((780, 310, 1080, 610))
    newImage.show()


這一段才是我今天筆記的重點。

image.crop((x, y, dx, dy))

當然,座標是我事先用小畫家看好的。

Output:

如上。

緊接著我們取消圖片的顯示,並將 exit() 移除,將圖片存入 Icons 資料夾底下。

最終程式碼:

# -*- coding: utf-8 -*-
import os
import re
from PIL import Image

picList = os.listdir('pic')
for pic in picList:
    if '01.png' not in pic: continue
    image = Image.open('pic/{}'.format(pic))

    # Crop
    newImage = image.crop((780, 310, 1080, 610))

    # Save
    newFileName = re.sub('01.png', '', pic)
    newImage.save('Icons/{}.png'.format(newFileName), quality=100)

Output:

大功告成!

Leave a Reply