いこブログ

非ITエンジニアのサラリーマンが業務を自動化、効率化するためのプログラムや生活を豊かにする情報を紹介します。

【Python】Pillowで画像を比率指定で一括リサイズする

画像の一括リサイズ

カメラで撮影した画像などはサイズが大きくそのままでは扱いづらいです。画像の解像度を下げることでファイルサイズが小さくなり私の持っている非力なPCでも編集等行いやすくなります。 前回は画像の縦横ピクセル数を絶対値で指定することで一括リサイズしました。

salapy.hatenablog.com

今回は縦横を圧縮する比率で指定し一括リサイズしていきます。

作成したプログラム

わかりやすいようプログラム中にコメントを入れました。 フォルダ構成は下記のとおりです。

resize
│  resize.py
│
└─img
        512x512org.jpg

プログラム:

import os
import glob
from PIL import Image

# imgフォルダにある.jpgファイルリストをすべて取得
img_files = glob.glob('img/*.jpg')
# 縦横をいくつで割るか
proportion = 2

# 取得したすべての.jpgファイルに対して処理を実行
for f in img_files:
    # PILで画像を開く
    img = Image.open(f)
    # imgのwidthとheightをproporionで割りリサイズしたimg_resizeを生成
    img_resize = img.resize((int(img.width/proportion),int(img.height/proportion)))
    # 保存するためのファイル名等を処理する
    fname, fext = os.path.splitext(f)
    # 保存場所とファイル名拡張子までsaveに渡す
    f_output = fname + '_resize'+ str(proportion) + fext
    img_resize.save(f_output)
    # 実行結果をprint出力
    print(f + "\t----->\t" + f_output)
    

WordやPowerPointに貼り付けることを考えて、画像はいつも圧縮したものも保存するようにしています。