Python 製作圖片縮圖 thumbnail

本篇 ShengYu 將介紹如何使用 Python 來製作圖片縮圖,這邊我們使用 python 的 PIL 模組來製作圖片的縮圖。

安裝 PIL

基本上新版本的 Python 應該都有內建 PIL,如果還未安裝 PIL 的話請參考這篇

使用範例

以下範例 ShengYu 是將 lena.jpg 這張圖片透過 thumbnail() 作縮圖,之後顯示並且存檔。

thumbnail-image.py
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from PIL import Image

img = Image.open("lena.jpg")
print(img.size)
img.show()

img.thumbnail((256, 256))
print(img.size)
img.show()
img.save("lena-thumbnail.jpg")

結果如下圖所示:
左邊為原圖,右邊為縮放後的圖。

thumbnail 和 resize 的差異

先前介紹過 resize 圖片縮放怎麼使用了,在這篇使用 thumbnail 作圖片縮圖,怎麼這兩個有點像呢?是不是 thumbnail 內部就是使用 resize 呢?
thumbnail() 跟 resize() 的不同處是,resize() 可以放大跟縮小,且可以不等比例縮放,而 thumbnail() 只能縮小,且只能等比例縮小,依據輸入參數裡的最短邊為主。
例如,我故意使用 Image.thumbnail((256, 200)),最後是縮成200x200的大小。
故意使用 Image.thumbnail((600, 600)),最後是縮成512x512的大小。
thumbnail() 會修改物件本身的的影像,而不像 resize() 是產生一個新的影像物件,所以速度會比 Image.resize() 快。

Image.thumbnail 參數的詳細細節請參考這裡

相關主題
Python 縮放圖片 resize
Python 圖片模糊化 blur
Python 旋轉圖片 rotate
Python 裁切裁剪圖片 crop
Python 在圖片上繪製文字