Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Python(初心者向け)】同じフォルダ内のある型式のすべての画像ファイルの画像サイズを変更する方法


画像ファイルのサイズをリサイズしたい場合の基本的なやり方については以下にて説明しました。

 

 

kuku81kuku81.hatenablog.com

 

 

 

実際に画像データのサイズをリサイズする場合によくあるのは、1つ1つリサイズするのではなくまとめてリサイズしたい、どこかのフォルダに画像ファイルをすべて入れておいて一気にリサイズしたい、ようなことではないかと思います。

 

そこで今回は、Pythonにてフォルダ内のある型式の画像ファイルをまとめてリサイズする場合のやり方について説明したいと思います。

 

 

 

1.同じフォルダ内のすべての画像ファイルのサイズを変更する方法例

 

以下が、同じフォルダ内にあるすべてのPNGファイルを洗い出して、あるサイズ(2778*1284)に変換する場合のコードの例になります。

 

2778,1284の箇所を変えれば任意のサイズに変換可能です。

 

import os
import glob
from PIL import Image

dst_dir = 'images_half'
os.makedirs(dst_dir, exist_ok=True)
files = glob.glob('./*.png')

for f in files:
    img = Image.open(f)
    img_resize = img.resize((2778, 1284))
  root, ext = os.path.splitext(f)
    basename = os.path.basename(root)
  img_resize.save(os.path.join(dst_dir, basename + '_half' + ext))

 

以下、簡単な説明になります。

 

1~3行目では必要なライブラリをインポートしています。

 

4,5行目で書き込み先のフォルダ名を「image_half」に設定して、カレントディレクトリにフォルダ(ディレクトリ)を作成しています。

 

6行目でカレントディレクトリのPNGファイルをすべて「files」に読み込んでいます。

 

7行目からのforループでは、「files」内のファイルの数だけ繰り返しています。

8行目で1つずつファイルを「img」に読み込んで、9行目でサイズを2778*1284にリサイズしています。

 

9行目ではファイル名の拡張子以外の部分と拡張子に分けてそれぞれroot,extに入れています。

10行目では拡張子以外の中からファイル名の部分だけを取り出しています。

 

最後にそれらをつなぎ合わせて書き込み用のパスとしてファイルを保存しています。

 

 

ここまでが一通りの説明になります。

 

6行目の「PNG」を変更したり、9行目の「2778,1284」を変更すれば他の型式の画像ファイルを変更したり、他のサイズに変更したりすることもできます。

 

以上が、Pythonで同じフォルダ内のある型式のすべての画像ファイルの画像サイズを変更する方法の説明になります。