如果你有一批照片想要統一調整成某一個尺寸,通常我們會選擇開啟應用程式使用圖形化介面的方式來完成,基本上如果你選對了軟體,這樣也還算快速方便。但是,如果你要調整的檔案數量非常多,而且不需要一些有的沒有的設定,想要很快地一口氣做完幾千個甚至是幾萬張圖片的尺寸調整的話,那麼你可能需要我們在這篇文章中介紹的 Python 程式。

這個程式叫做 resize.py (其實就是一個 Python 的小程式,你要叫什麼都可以),你只要在這個程式的同一個目錄之下準備好一個叫做 source_images 的資料夾用來放置要被調整的原始圖形檔(.jpg),要多少個檔案都可以。另外準備好一個空的目錄叫做 resized_images ,用來放置調整後的圖形檔位置。然後執行以下指令:

python resize.py 800

在你按下 Enter 之後,程式就會把你的所有放在 source_images 中的圖形檔,全部縮放為 800(等比例)。如果你不指定寬度,則預設值為 640。處理完畢之後,會把所有處理過的檔案放在 resized_images 資料夾中。以下就是程式的原始碼:

# Program Name: resize.py
# Author: skynet
# Date: 2015/9
# 

import os, sys
from PIL import Image
from PIL import ImageFile
import glob

args = sys.argv
basewidth = 640
if len(args)<2:
    basewidth=640
else:
    try:
        basewidth=int(args[1])
    except:
        basewidth = 640
print "Width: " , basewidth
all_image_files = glob.glob('source_images/*.jpg')
output_dir = "resized_images"
ImageFile.LOAD_TRUNCATED_IMAGES = True

if not os.path.exists(output_dir):
    os.mkdir(output_dir)
for image_file in all_image_files:
    print "Processing", image_file, "..."
    img = Image.open(image_file)
    width, height =  img.size
    percent = float((float(basewidth)/float(width)))
    hresize = int(float(height) * float(percent))
    if width != basewidth:
        img = img.resize((basewidth, hresize), Image.ANTIALIAS)
    image_filename = image_file.split('/')[1]
    image_filename = output_dir + "/" + image_filename
    print "Save to " + image_filename
    img.save(image_filename)

要注意的是,這個程式如果要順利執行,你的Python環境必需要完成安裝PIL(Pillow)程式庫才行,如果你的環境還算簡單,先試試看pip install pillow可不可以。如果不行,就要再去找找安裝教學了。

(1669)

%d 位部落客按了讚: