Python

【Python】フォルダ画像を一括でサイズ変換する方法を徹底解説!【5分でできます】

【Python】フォルダ画像を一括でサイズ変換する方法を徹底解説!【5分でできます】

こんにちは、さすを(@sasuwo0409)です。

いきなりですが、

フォルダにある画像のサイズをまとめて変換したい!

と思ってはいませんか?

今回の記事は、Pythonを使ってフォルダにある画像のサイズを一括で変換する方法を解説してみたいと思います。

この記事を読めば、フォルダの画像を簡単にサイズ変換することができます。

それでは本文をどうぞ。

困っている人
困っている人

フォルダに大量に集めた画像のサイズを変えたいんだけど、ひとつひとつ手でやるのほんとうにめんどくさい、、

もっと効率的にできる方法はないかしら、、

さすを
さすを

この悩みを解決します!

この記事を読むとわかること:

Pythonを使ってフォルダ画像を一括でサイズ変換する方法

筆者の情報:

  • 現役システムエンジニア 兼 ブロガー
  • 過去に6,000万のPython案件を受注
  • 最近ハマっていることは機械学習
スポンサーリンク

1.Pythonを使って複数枚の画像を自動でExcelに張り付ける方法

1.Pythonを使って複数枚の画像を自動でExcelに張り付ける方法

今回はGoogle Colaboratory上でプログラムを動かしていきます。

Google Colaboratoryの使い方については「【3分で解決!】Google Colaboratoryの使い方【無料ですぐにPythonを使えます】」で解説しています。

さすを
さすを

パスを変えればローカル環境でも使うことができます!

Pythonを使って画像のサイズを変更するための手順は以下の2ステップです。

  1. 画像を格納するフォルダを作成する
  2. 画像のサイズを変更するプログラムを書く

その①:画像を格納するフォルダを作成する

今回は、プログラムが格納されているGoogle Colabフォルダ直下にimgフォルダを作成しています。
また、imgフォルダの中にdog_testフォルダ、dog_testフォルダの中にresizeフォルダを作っています。

Google Colab
—–change_pic_size.ipynb(これから作るスクリプト)
—–img
———–dog_test(サイズを変更したい画像が入ったフォルダ)
—————– resize(空のフォルダ)

図1:フォルダ構造
図1:フォルダ構造

フォルダ構成を変更してもOKですが、後述するプログラムの保存先フォルダ名が変わるので注意してください。

なお、まだ画像を準備しておらず、一括で画像を取得したい場合は、「【コピペOKです】Pythonを使って自動でGoogle画像を収集する方法を徹底解説!」が参考になると思います。

その②:画像のサイズを変更するプログラムを書く

フォルダ内の画像を自動で変更するプログラムは下記の通りです。

#ドライブをマウントする
from google.colab import drive
drive.mount('/content/drive')

補足:
上記のコマンドを実行すると、以下の画面が現れます。手順通りに操作すればOKです。

1.URLを押下

図1:マウントの手順①
図1:マウントの手順①

2.希望のアカウントを選択

図2:マウントの手順②
図2:マウントの手順②

3.ログインを押下

図3:マウントの手順③
図3:マウントの手順③

4.コードをコピーし、「Enter your authorization code」に入力

図4:マウントの手順④
図4:マウントの手順④
#カレントディレクトリに移動
%cd "/content/drive/My Drive/Google Colab"
import os
import time
import datetime
import PIL.Image
from pytz import timezone

#現在時刻の表示
now = datetime.datetime.now()
jst_now = timezone('Asia/Tokyo').localize(now)
print("処理を開始します。")
print(jst_now)

#処理時間計測用
tm_start = time.time()

#リサイズ前の画像フォルダ
dir_org = ('img/dog_test')

#リサイズした画像を格納するフォルダ
new_dir_name = ('img/dog_test/resize')

files = os.listdir(dir_org)
files_file = [f for f in files if os.path.isfile(os.path.join(dir_org, f))]

#希望画像サイズ
width = 120
height = 90

for file in files_file:
    img = PIL.Image.open(dir_org + '/' + file)
    img_resize = img.resize((width,height))
    img_resize.save(os.path.join(new_dir_name, file))

tm_end = time.time()
print('------------------------------------')
print('処理が完了しました。')
total = tm_end - tm_start
total_str = f'トータル時間: {total:.1f}s({total/60:.2f}min)'
print(total_str)

実行結果:

図2:実行結果①
図2:実行結果①
図3:実行結果②
図3:実行結果②
図4:比較画像
図4:比較画像

作成したフォルダをローカルに落とす方法

作成したフォルダをローカルに落とすには、「resize」フォルダを右クリック → 「ダウンロード」の順に行えばOKです。

図5:フォルダをローカルに落とす手順
図5:フォルダをローカルに落とす手順

最後に:「単純作業」をつぶしていこう

Google Colaboratoryを使ってフォルダ画像を一括でサイズ変換する方法を解説してきました。

ちょっとした単純作業でも、それが増えれば膨大な時間になるので、自動化できることに越したことはないですよね。

というわけで、これからもコツコツと自分の時間が増えるようプログラムを書いていこうと思います。この記事が少しでも役に立っていたらうれしいです!

それでは!

コメント

タイトルとURLをコピーしました