【初心者向け】Pythonで画像の一括リサイズをする方法と便利な応用テクニック

Pythonで画像の一括リサイズをする方法と便利な応用テクニック python

大量の画像を手作業でリサイズするのは大変ですよね。そこで役立つのが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サービスのエンジニアに転職した話

参考リンク:
Pillow公式ドキュメント
Python osモジュール公式

コメント

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