Pillow(枕頭) 是另一套處理圖型的套件,簡稱為 PIL。PIL 支援開檔、存檔、縮放、旋轉等功能,使用前請先 pip install Pillow
開啟圖片
Pillow 可支援中文檔名,非常的方便
from PIL import Image pil=Image.open("老虎.jpg")
儲存圖片
儲存檔案也支援中文檔名
from PIL import Image pil=Image.open("老虎.jpg) pil.save("老虎2.jpg")
PIL to cv2
使用 np.array(pil) 轉成 cv2 格式。PIL為 RGB 格式,所以要先將 RGB 轉成 cv2 的 BGR 格式
from PIL import Image import numpy as np import cv2 pil=Image.open("老虎.jpg") img=np.array(pil)[:,:,::-1] img=cv2.resize(img, (1024, 768), interpolation=cv2.INTER_CUBIC) cv2.imshow("test", img) cv2.waitKey(0)
cv2 to PIL
使用 Image.fromarray(img) 轉成 PIL 格式,同樣需將BGR 轉成 RGB
pil=Image.fromarray(img[:,:,::-1])
縮圖
thumbnail的效能比 resize 還佳
from PIL import Image import numpy as np import cv2 pil=Image.open("老虎.jpg") pil.thumbnail((400,300)) img=np.array(pil)[:,:,::-1] cv2.imshow("test", img) cv2.waitKey(0)
todo
濾鏡
todo
from PIL import Image from PIL import ImageFilter img = Image.open("test_resized.jpg") img_f = img.filter(ImageFilter.FIND_EDGES) img_f.save("test_rf.jpg")
Icon
Icon 是網頁或是 exe 發佈檔所需的圖型格式,但在 Windows 下卻沒有輕量級軟体可轉成 Icon,甚至小畫家、Photoshop 都無技可施。唯一的方法就是用線上轉換,但又怕這些網站有入侵的危險。還好 Pillow 就有轉換成 icon 的功能,請依如下代碼執行即可。
from PIL import Image
import os
path="E:/java"
file="logo.jpg"
name, txt=os.path.splitext(file)
img = Image.open(os.path.join(path, file))
# 設定轉換尺寸,通常 Windows icon 建議 16x16、32x32、48x48、256x256
icon_sizes = [(256, 256)]
target=os.path.join(path, f"{name}.ico")
img.save(target, format='ICO', sizes=icon_sizes)