新しいサービス【AwesomeQR】

【たった12行】指定フォルダの画像ファイルの一括リサイズ【Python編】

4 min 19,787 views
AI
はじめに

印刷の現場やウェブの制作の現場で画像を使うことが多いと思いますが、大量の画像をリサイズしたいといったケースがあるかと思います。
今回は、そんな時に使えるPythonのライブラリを見つけたのでシェアしたいと思います。

結論

いきなりですが、完成したコードの画像を先に紹介します。

完成形の画像
完成形のイメージ

どうでしょうか?
非常にシンプルなコードで、あるフォルダ内にある画像ファイルすべてを別のフォルダに一括でリサイズできます。

それでは、少しずつ解説していきたいと思います。

ステップ

まず、今回のコードの内容のステップを説明します。

  1. ライブラリのインストール
  2. 必要なライブラリのインポート
  3. フォルダの指定
  4. 画像ファイルを開く
  5. 開いた画像をリサイズする
  6. リサイズした画像を保存する
  7. ④、⑤をフォルダ内の画像ファイル数分繰り返す

それでは、一つずつ解説します。

解説

それでは、コードの説明と流れを説明します。
まず、今回もGoogleのColaboratoryのエディタを使っていきたいと思います。

GoogleのColaboratoryについては、以前の記事にも書いていますので、参考にしてみてください。

  1. STEP

    ライブラリのインストール

    今回は、Pillowという画像などを処理できるライブラリを使っていきたいと思います。
    こちらのライブラリについては、以下のサイトに詳しいことが説明されています。

    まずは、このライブラリを以下のコードでインストールします。

    pip install Pillow

  2. STEP

    必要なライブラリのインポート

    次に必要なライブラリのインポートしていきます。

    import os //ファイルやフォルダ操作
    from PIL import Image //PillowからImageをインポート
    from google.colab import drive,files
     //Googleドライブとの連携
    drive.mount("/content/drive")

    上記のようなコードを入力します。

    ファイルやフォルダ操作する(ファイルを開いたり、保存したりする)ために、osというライブラリをインポートします。

    画像加工操作をするために、PillowというライブラリからImageモジュールをインポートします。

    Colaboratory上でファイル操作をするために、Googleドライブと接続が必要になるのですが、その設定のために、google.colabというライブラリからdrive.filesモジュールをインポートします。

    Googleドライブとの接続に関する説明は以下サイトを参照ください。

  3. STEP

    フォルダの指定

    次に、画像が入っているフォルダとリサイズしたファイルを保存する先のフォルダを設定します。

    dir_name = "/content/drive/My Drive/photo"
     //画像が入っているフォルダ
    new_dir_name = "/content/drive/My Drive/resize" //保存する先のフォルダ

    Googleドライブにphotoというフォルダを事前に作成して、そこにリサイズする画像を入れておきます。

    画像イメージ
    フォルダ内の確認

    上図の右側はローカルのフォルダで、左側がGoogleドライブのフォルダです。
    こちらのファイルをすべて移動しておきます。


    実際には上図の右側にファイルの大きさが書いてあるのですが、分かりづらいので、下図のように様々な大きさの画像であることを確認します。

    リサイズ前画像
    リサイズ前画像

    Googleドライブにphotoというフォルダに画像を入れるのと同時に、resizeという空のフォルダを作成しておきます。

  4. STEP

    画像ファイルを開く

    まず、以下のコードでフォルダ内のファイルを指定します。

    files = os.listdir(dir_name)

    osライブラリのlistdirというモジュールを使用して、フォルダからファイルを指定します。

    以下のコードで指定したファイルを開きます。

    photo = Image.open(os.path.join(dir_name, file))

    PillowライブラリのImageモジュールを使って、指定した画像ファイルを開きます。

  5. STEP

    開いた画像をリサイズする

    以下のコードで画像をリサイズします。

    photo_resize = photo.resize((300,300))

    今回は、300×300のサイズにリサイズするため、photo.resize((300,300))と入れていますが、ここの数値をリサイズしたい数値に設定します。

  6. STEP

    リサイズした画像を保存する

    以下のコードでファイルを保存します。

    photo_resize.save(os.path.join(new_dir_name, file))
  7. STEP

    STEP4~6を繰り返す

    最後にSTEP4~STEP6を繰り返すコードを入力します。

    for file in files:
        photo = Image.open(os.path.join(dir_name, file))
        photo_resize = photo.resize((300,300))
        photo_resize.save(os.path.join(new_dir_name, file))

    for文file in files:とすることで、画像ファイルを一つずつ指定して繰り返す操作になります。

さいごに

最後に今回のコードをまとめて入力すると、以下のようになります。

pip install Pillow
import os
from PIL import Image
from google.colab import drive,files
drive.mount("/content/drive")
dir_name = "/content/drive/My Drive/photo"
new_dir_name = "/content/drive/My Drive/resize"
files = os.listdir(dir_name)
for file in files:
    photo = Image.open(os.path.join(dir_name, file))
    photo_resize = photo.resize((300,300))
    photo_resize.save(os.path.join(new_dir_name, file))

念のため、画像を確認してみます。

リサイズ画像
リサイズ画像

コードとしては12行で収まっていますが、いかがでしょうか?
個人的には、簡単なコードだけで、自動で画像リサイズできるので便利かなと思います。
ウェブで扱う画像などを自動で処理するには使えるかもしれません。

関連記事