python 進行圖片壓縮

目前遇到的案例是這樣:之前使用者上傳的資料有點大,沒有注意到壓縮這件事就給他過去了。結果硬碟當然是爆開了。

如果要說有什麼程式語言可以撰寫小功能在 linux 用 crontab 下去跑。那麼 python 會是一個優先考量。

這次任務的思考方式:
排程執行 -> 針對特定的資料夾 -> 取出圖片迴圈 -> 壓縮圖片 -> 回存

首先我們就先取得資料夾的內容吧

#!/usr/bin/python
# -*- coding: utf-8 -*-
from os import listdir
from os.path import isfile, isdir, join
from PIL import Image

# 指定要列出所有檔案的目錄
mypath = "/Users/james/Desktop/img_test"

# 取得所有檔案與子目錄名稱
files = listdir(mypath)

# 以迴圈處理
for f in files:
    print(f)

如下圖:


接著就是重頭戲,我們要針對圖片去作壓縮。
im = Image.open(mypath +'/'+ f)
print(im.size);
try:
    thumb_im = im.thumbnail((1000, 1000))
    print(im.size);
    im.save(mypath +'/'+ f)
except:
            continue

大概解釋一下指令吧!
# 取得所有檔案與子目錄名稱
files = listdir(mypath)
# 將指定路徑的圖檔用 PIL 打開命名為 im
im = Image.open(mypath +'/'+ f)

#等比壓縮到最長邊為 1000
thumb_im = im.thumbnail((1000, 1000))
#回存到原本的路徑
im.save(mypath +'/'+ f)



留言