大量の画像を手作業でリサイズするのは大変ですよね。そこで役立つのがPythonです。この記事では、初心者でもわかりやすく「Pythonで画像の一括リサイズをする方法」を解説し、応用テクニックや注意点まで紹介します。
Pythonで画像を一括リサイズするメリット
まずは、なぜPythonで画像の一括リサイズを行うのか、そのメリットを確認してみましょう。
手作業でリサイズする場合、数枚であれば問題ありません。しかし数百枚以上あると、時間も手間もかかります。Pythonを使えば、わずか数行のコードで大量の画像を自動処理できるため、作業効率が大幅に向上します。さらに、サイズを統一できるため、Webサイトにアップロードする際の表示崩れ防止やファイル容量の削減にもつながります。
必要なライブラリと環境準備
画像の一括リサイズには「Pillow」というライブラリを使います。PillowはPythonで画像を扱うための代表的なライブラリで、リサイズ以外にも回転や加工など幅広い機能を備えています。
以下のコマンドでインストールしましょう。
pip install pillow
また、複数の画像ファイルを扱うために標準ライブラリの「os」も併用します。特別な環境構築は不要なので、初心者でも簡単に始められる点が魅力です。
基本的な一括リサイズスクリプト
固定サイズにリサイズする例
次のコードは、指定フォルダ内のすべての画像を幅800px、高さ600pxにリサイズして保存するサンプルです。
from PIL import Image
import os
input_folder = "input_images"
output_folder = "resized_images"
os.makedirs(output_folder, exist_ok=True)
for file_name in os.listdir(input_folder):
if file_name.lower().endswith((".jpg", ".png", ".jpeg")):
img_path = os.path.join(input_folder, file_name)
img = Image.open(img_path)
resized = img.resize((800, 600))
resized.save(os.path.join(output_folder, file_name))
このコードを実行すると、指定したフォルダ内の画像がすべてリサイズされ、新しいフォルダに保存されます。サイズを固定する方法は非常にシンプルですが、アスペクト比が変わる点に注意が必要です。
アスペクト比を維持してリサイズする例
固定サイズだと画像が潰れてしまうことがあります。そのため、元の比率を維持しつつリサイズする方法も覚えておくと便利です。
from PIL import Image
import os
input_folder = "input_images"
output_folder = "resized_keep_ratio"
os.makedirs(output_folder, exist_ok=True)
for file_name in os.listdir(input_folder):
if file_name.lower().endswith((".jpg", ".png", ".jpeg")):
img_path = os.path.join(input_folder, file_name)
img = Image.open(img_path)
img.thumbnail((800, 800))
img.save(os.path.join(output_folder, file_name))
「thumbnail」を使うと、指定した最大サイズを超えない範囲で縮小でき、比率が保たれます。
応用テクニック
複数フォーマットをまとめて処理
JPEG、PNG、GIFなど複数形式の画像が混在している場合も問題ありません。条件分岐で対応できるため、フォーマットに合わせて最適化した処理を追加するのも良いでしょう。
サブフォルダも含めて処理
画像がサブフォルダに分けられているケースもあります。その場合は「os.walk」を使うと階層ごとに処理できます。これにより、複雑なフォルダ構造でも一度に処理可能です。
画質調整や保存形式の変更
Pillowでは「quality」オプションを使ってJPEGの画質を調整できます。またPNGをJPEGに変換して容量を小さくするなど、保存形式を変更する応用も可能です。
よくあるエラーと注意点
FileNotFoundError
指定したフォルダやファイルが存在しない場合に発生します。フォルダ名のスペルミスや、パスの指定が正しいかを確認しましょう。
PermissionError
保存先のフォルダに書き込み権限がないときに出るエラーです。出力フォルダを作成するコードを入れておくことで回避できます。
OSError(破損画像など)
破損した画像や未対応のフォーマットを読み込むとエラーが発生する場合があります。その場合はtry-exceptで例外処理を追加して、スクリプト全体が止まらないようにしましょう。
プログラミング初心者におすすめのサービス
「もっと実践的なコード例が欲しい」「自分の用途に合わせて教えてほしい」という方には、
テックアカデミーがおすすめです。
AI関連コースやシステム開発コース、アプリ開発コースなど豊富な学習が可能です。
さらに今なら無料相談でアマギフプレゼントもあるので、気軽にお申込みしてみてください。
また、プログラミング学習のプラットフォームとして、ココナラでは、現役エンジニアや経験豊富な講師が、あなたのレベルや目的に合わせてマンツーマンで指導してくれます。
書籍や動画ではカバーしきれない、あなた専用のカリキュラムで学べるのが最大の魅力。短時間で効率的にスキルを伸ばしたいなら、まずは出品者のサービスをチェックしてみましょう。
また、教える側としてスキルを活かして副業・独立を目指すことも可能です。
プログラミング経験や知識があれば、自分の得意分野をサービスとして出品し、全国の学習者から直接依頼を受けられます。オンラインで完結するため、場所や時間に縛られず、自分のペースで働けるのも大きなメリットです。
こちらのリンクから詳細をチェックしてみてください。
まとめ
PythonとPillowを使えば、大量の画像を効率よく一括リサイズできます。基本から応用まで理解すれば、作業時間を大幅に削減できるでしょう。
以下のリンクから、
SESの組込みシステムから色々な不満を持ち、自社WEBサービスへ転職した実体験の記事がありますので、是非読んでみてください。とても喜びます。
SESの組込みシステムから自社WEBサービスのエンジニアに転職した話

コメント