iT邦幫忙

2022 iThome 鐵人賽

DAY 9
1

這篇文章會介紹使用 Python 的 Pillow 第三方函式庫,實作可以將圖片打上馬賽克的效果。

原文參考:圖片馬賽克效果

本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )

Python 教學 - 圖片馬賽克效果

安裝 Pillow

輸入下列指令安裝 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')                               # 存檔

Python 教學 - 圖片馬賽克效果

選取特定範圍馬賽克

參考「裁切與旋轉圖片」文章,裁切馬賽克圖片中的特定區域,再將這個區域貼到原本圖片中同樣的位置,就能實現特定區域馬賽克的效果。

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')

Python 教學 - 圖片馬賽克效果

更多 Python 教學

大家好,我是 OXXO,是個即將邁入中年的斜槓青年,我已經寫了超過 400 篇 Python 的教學,有興趣可以參考下方連結呦~ ^_^


上一篇
( Day 8 ) 圖片加上文字浮水印
下一篇
( Day 10 ) 圖片的模糊化與銳利化
系列文
學 Python 到底可以幹麻勒?41
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言