Pythonでフォルダ内の画像を自動一括リサイズする方法

  • このエントリーをはてなブックマークに追加

プログラム化する最大のメリットは自動化にあります。過去単一画像のリサイズ処理を紹介しましたが、今回はフォルダにある画像を全て一括でリサイズする方法を紹介します。

こんにちは。wat(@watlablog)です。
そろそろプログラム化の恩恵が得られる内容も書いていこうと思います。今回はフォルダ内の画像を一括でリサイズする方法を紹介します

ファイルを一括リサイズするために必要な2つのこと

①ファイルパスを自動で取り扱う

ファイルを一括で処理するためには、まずはファイル名を自動で取得したり、自動で保存用のパスに変換したり、拡張子の情報を使ってエラー処理したりといったことが必要です。

それらの内容は「Pythonでフォルダ内のファイル一覧を取得する3つのメリット」に記載しましたので、是非こちらの記事を確認してみて下さい。今回は過去のアルゴリズムをそのまま使います。

②リサイズの関数

ファイルリサイズはOpenCVの関数を使うことで簡単に書くことが出来ます。具体的なリサイズの方法は「Python/OpenCVで画像をリサイズする方法」に書きましたので、こちらも併せて参照頂ければと思います。

実際に今回実行するプログラムで得られる結果は以下の画像で示すサイズ変換画像です。前回は単一画像だけに実行していましたが、今回はフォルダ内の画像を一括で処理します。

リサイズ結果

フォルダ内の画像を一括リサイズするPythonコード

全コード

今回は二つのdef関数を使います。初めは前回作成したファイルリスト関数を使ってから再度forループでリサイズをしていくことを考えましたが、それだとムダに2回forループを回すことになるので、今回はファイル名操作部分の途中でリサイズ関数を実行する方式にしました。

基本的には過去記事の2つの内容を組み合わせただけなので、以下の全コード内記載のテキスト説明をご確認下さい。

実行結果

以下が本コードの実行結果です。元ファイルは「sample_〇〇.JPG」ですが、リサイズしたファイルは「sample_〇〇_resize.JPG」と元ファイルの名前を参照しつつリサイズした事がわかるようにしました。

実行結果

まとめ

今回は過去の「Pythonでフォルダ内のファイル一覧を取得する3つのメリット」と「Python/OpenCVで画像をリサイズする方法」を組み合わせて一括リサイズプログラムを書いてみました。

内容は非常にシンプルですが、一括でファイルに処理を施し自動で保存していくプログラムは汎用性のある内容かと思います。

今回はシンプルな方法ですが、今後処理の内容を変えれば色々応用がきくプログラムになったと思います!

Twitterでも関連情報をつぶやいているので、wat(@watlablog)のフォローお待ちしています!

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメント

  1. くま吉ぱんだ より:

     こんにちは
    サンプルありがとうございます。

    質問ですが、このソースをベースに、jpg や、pngなどのファイルをwebp形式に変換させるにはどうすればいいでしょうか?

    1. wat より:

      ご訪問ありがとうございます。
      私の方がwebp形式に詳しくないので、明確な答えにならず申し訳ないのですが、Googleが作った画像形式とお見受けします。
      以下は外部サイト様ですが、おそらく目的のコードかなと思った記事がありましたのでご紹介させて頂きます。
      https://rmc-8.com/programming/python/conv_to_webp_with_python

      こちらでもwebpを使ったコードは今後念頭に置いておきたいと思いますが、まずは上記リンクがわかりやすいと思いますので、ご覧頂ければと思います。

wat へ返信する コメントをキャンセル

*