非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

Pythonで複数の画像を一括でリサイズするプログラム

   

Pythonで画像を一括して指定サイズにリサイズするプログラムを書いたので公開。

ブログに載せる画像などに使うと便利です。スマホとかデジカメで撮影した画像はサイズ的に大きすぎなので、僕はブログにアップする際はサイズを小さくしています。

以前、Go言語でも作りましたが、Pythonの方が手軽そうなので。

広告

今回用意した画像

こちらが今回用意した画像です。フリー素材サイトから拝借。

ソースコード

こちらがソースコード全文です。要所要所にコメントで解説しています。

import os
import glob
from PIL import Image

wsize = input('Image Size: ')
if wsize=='':
  wsize=700 #デフォルトは幅700px
else:
  wsize = int(wsize)
#指定フォルダのjpegファイル一覧を取得
files = glob.glob('./img/*.jpg')

#ファイル一覧をループ
for f in files:
  img = Image.open(f)
  #指定幅以下の画像はスキップ
  if wsize >= img.width:
    continue
  #指定幅からリサイズレートを算出
  rate = wsize / img.width
  #リサイズレートから高さを算出
  hsize = int(img.height * rate)
  #リサイズ実行
  img_resize = img.resize((wsize, hsize))
  #新しいファイル名を作成
  imgdir = os.path.dirname(f)
  imgname = os.path.basename(f)
  newfname = imgdir + "/out_" + imgname
  print(newfname)
  #リサイズ画像を指定ファイル名で保存
  img_resize.save(newfname)
 

 

実行例

実行するとリサイズする画像サイズを聞かれます。幅サイズです。もし何も入力しないでEnterキーを押したらデフォルトとして700が割り当てられます。

 

以下のように出力ファイル名を表示した後終了となります。

 

画像フォルダを見るとご覧の通りリサイズされた画像が生成されました。

 

広告

 - Python