Python 動手寫個批次縮圖工具

本篇 ShengYu 將介紹如何使用 Python 寫個批次縮圖的小工具,接下來介紹怎麼使用 Python 的 PIL 模組來完成這個小專案吧。

安裝 PIL

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

用法

batch-resize-photo-tool.py 使用方式為 ./batch-resize-photo-tool.py <input-dir> <output-dir>,例如:

1
$ ./batch-resize-photo-tool.py ./input/ ./output/

程式碼

以下為部份原始碼,會偵測圖片 exif 中的 Orientation, 並且將它轉正,這樣大大的幫助我們去每張手動去旋轉,

batch-resize-photo-tool.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
import os
import shutil
from PIL import Image

if __name__ == '__main__':
if len(sys.argv) <= 2:
print('no argument')
print(sys.argv[0] + ' <input-dir> <output-dir>')
sys.exit()
ext = ['jpg','JPG','jpeg','png']

indir = sys.argv[1]
outdir = sys.argv[2]

files = os.listdir(indir)

for file in files:
if file.split('.')[-1] in ext:
print('input=' + indir + file)
resize_by_ratio(indir+file, outdir+file, 20.834)

另外還有個功能是可以指定寬度優先與高度優先的功能,下次有機會我再介紹。

其它相關文章推薦
Python 旋轉圖片 rotate
Python 縮放圖片 resize
Python 裁切裁剪圖片 crop
Python 圖片模糊化 blur
Python 在圖片上繪製文字