Pythonで画像サイズを自動的に変更する方法
※ブログのサムネ by Panasonic GH5+12-60mm
「1個1個画像をソフトでサイズ変更するのはめんどう…」
「画像をサイズ変更したいけど、どうやったら効率的なんだろう」
「プログラミングで画像サイズの変更をでできないかな」
画像サイズを変更したいけど、数があってめちゃくちゃ面倒なことってありませんか?
プログラミングで画像サイズの変更を覚えたら、1クリックで終わります。
「画像サイズの変更でストレスを感じている」、「効率的に画像サイズの変更をしたい」と思っている方は必見の内容となっています。
Pythonで画像サイズを自動的に変更する方法

本題のコードはこちらです。
各要所を説明していきます。
1from PIL import Image
2
3def resize_image(input_path, output_path, width, height, quality):
4 # 画像を開く
5 image = Image.open(input_path)
6
7 # リサイズする
8 resized_image = image.resize((width, height), resample=Image.LANCZOS)
9
10 # 画質を調整する
11 resized_image.save(output_path, quality=quality)
12
13# リサイズ前の画像のパス
14input_name = "test"
15input_path = input_name + ".jpg"
16
17# リサイズ後の画像のパス
18output_path = input_name + "-1280x720.jpg"
19
20# リサイズ後の横幅と高さ
21width = 1280
22height = 720
23
24# 品質を指定
25quality = 100 # 0から100の範囲で指定(100が最高品質)
26
27# 画像をリサイズする
28resize_image(input_path, output_path, width, height, quality)
画像のパスを指定する
1# リサイズ前の画像のパス
2input_name = "test"
3input_path = input_name + ".jpg"
4
5# リサイズ後の画像のパス
6output_path = input_name + "-1280x720.jpg"
ここでは、画像ファイルがある場所(パス)を指定しています。

プログラムファイルを同じ場所にあるときは、上記のままでOKです。画像ファイルとプログラムファイルの場所が別々にあるときは、画像ファイルの場所を指定してあげてください。
input_nameで拡張子を除くファイル名を、
input_pathで拡張子を含むファイル名を指定してます。
output_pathでリサイズ後のファイル名を指定してますが、別の場所の保存したいときは指定してあげれば可能です。
サイズ、品質の指定
1# リサイズ後の横幅と高さ
2width = 1280
3height = 720
4
5# 品質を指定
6quality = 100 # 0から100の範囲で指定(100が最高品質)
リサイズ後の横幅、高さ、そして品質を指定してます。
品質を落とすと画像ファイルの容量が減っていきます。
画像のリサイズ
1# 画像をリサイズする
2resize_image(input_path, output_path, width, height, quality)
上記の1行で、下記を呼び出してその内容を実行します。
1def resize_image(input_path, output_path, width, height, quality):
画像を開く
1# 画像を開く
2image = Image.open(input_path)
input_pathで指定した画像ファイルを開きます。
画像サイズの変更
1# リサイズする
2resized_image = image.resize((width, height), resample=Image.LANCZOS)
開いた画像を、指定したサイズに変更します。
画質の指定
1# 画質を調整する
2resized_image.save(output_path, quality=quality)
サイズ変更した画像を、指定した品質で保存します。
Pythonで画像サイズ変更をする理由

どのプログラムでも画像サイズの変更程度ならできてしまいますが、私はPythonでやることをおすすめします。
- プログラミング言語の中でもPythonが画像を扱うのが得意だから
- Pythonがプログラミング初心者向けだから
今回は画像サイズの変更でしたが、2つの画像を比較したり、データからグラフを作って画像にしたり、いろいろなことができます。
また、Pythonはプログラミング初心者向けです。
プログラミングはルールなどが多くあって、すぐに覚えることはできません。
その中でも、インデントを使ってキレイにプログラミングすることは初心者の方には難しいかもしれません。

Pythonの場合はキレイにインデントを使わないと、エラーがでてプログラムを実行することもできないよ。インデントを強制的に覚えることになるから、キレイなコードが書けるようになるね!
インデントとは、下記のコードを例にすると3行目のimageの前にある空白のことです。
1def resize_image(input_path, output_path, width, height, quality):
2 # 画像を開く
3 image = Image.open(input_path)
tabキーを1回押すと上記のようになります。
なぜこういうことをするかというと、「def resize_image()」の中にあるのが「image = Image.open()」というふうに機械に教えるためです。
繰り返すことはプログラミングで解決する

今回の画像サイズ変更は、私の場合は毎日やっていることなので、プログラミングすることで毎日のルーティンが1クリックになりました。
あなたのやっていることが「毎日繰り返す」、「1日の中でも何回もある」、「月1回は必ずある」であれば、プログラミングで1クリックで終わるかもしれません。
プログラミングの得意とすることは、同じことの繰り返しです。ミスも起きません。
しかし、人は同じことの繰り返しでは楽しくなかったり、ミスをしたり、機械よりは不得意です。
ですので、繰り返すことはプログラミングで解決しましょう。