這篇文章會介紹使用 Python 的 Pillow 第三方函式庫,實作可以將圖片打上馬賽克的效果。
原文參考:圖片馬賽克效果
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
輸入下列指令安裝 Pillow,根據個人環境使用 pip 或 pip3,如果使用 Colab 或 Anaconda Jupyter,已經內建 Pillow 函式庫。
!pip install Pillow
透過 Pillow Image 裡的 size 方法讀取圖片長寬,再透過 resize 方法,根據 level 將圖片縮小到指定尺寸,再使用 resample = Image.NEAREST 參數將圖片放大,就能得到一張馬賽克圖片的效果。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
from PIL import Image
img = Image.open('oxxostudio.jpg') # 開啟圖片
w,h = img.size # 讀取圖片長寬
level = 50 # 設定縮小程度
img2 = img.resize((int(w/level),int(h/level))) # 縮小圖片
img2 = img2.resize((w,h), resample = Image.NEAREST) # 放大圖片為原始大小
img2.save('test.jpg') # 存檔
參考「裁切與旋轉圖片」文章,裁切馬賽克圖片中的特定區域,再將這個區域貼到原本圖片中同樣的位置,就能實現特定區域馬賽克的效果。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
from PIL import Image
img = Image.open('oxxostudio.jpg')
w,h = img.size
level = 20
img2 = img.resize((int(w/level),int(h/level)))
img2 = img2.resize((w,h), resample = Image.NEAREST)
x1, y1 = 60, 60 # 定義選取區域的左上角座標
x2, y2 = 250, 250 # 定義選取區域的右上角座標
area = img2.crop((x1,y1,x2,y2)) # 裁切區域
img.paste(area,(x1, y1)) # 在原本的圖片裡貼上馬賽克區域
img.save('test.jpg')
大家好,我是 OXXO,是個即將邁入中年的斜槓青年,我已經寫了超過 400 篇 Python 的教學,有興趣可以參考下方連結呦~ ^_^