今回は、Pythonを使ってJPEG画像を効率的にリサイズする方法をご紹介します。
このスキルは、Webサイトのパフォーマンス改善やデータ処理作業を自動化する際に特に役立ちます。
初心者から上級者まで、誰でも簡単に実行できるステップを解説していきますので、ぜひこの記事を参考にしてみてください。
目次
ライブラリのインストール
PIL(Python Imaging Library)とは
PILは画像処理機能を提供するライブラリで、現在はPillow
という名前で開発が続けられています。
Pillowをインストールするには、コマンドラインまたはターミナルで以下のコマンドを実行します。
インストール手順
コマンドプロンプトで以下のコマンドを実行してください。
pip install Pillow
作成したPythonコード
このPythonプログラムは、ユーザーが指定したディレクトリ内のJPEG画像を検索し、横幅1000ピクセルにリサイズして保存します。
縦横比は維持され、リサイズされた画像は新しいサブディレクトリに保存されます。
JPEGファイルがない場合は終了します。
コード解説
- 必要なライブラリのインポート:
PIL
(Python Imaging Library) からImage
モジュールをインポート。これは画像処理機能を提供します。os
モジュールをインポート。ファイルパスの操作やディレクトリの作成に使用します。glob
モジュールをインポート。特定のパターンに一致するファイル名のリストを取得するのに使用します。
resize_jpeg_images
関数の定義:- 引数
input_directory
は、JPEG画像が保存されているディレクトリのパスです。
- 引数
- JPEGファイルの検索:
- 指定されたディレクトリ内の
.jpg
および.jpeg
拡張子を持つファイルを検索し、リストに格納します。
- 指定されたディレクトリ内の
- JPEGファイルの存在チェック:
- JPEGファイルが一つも見つからない場合、プログラムはメッセージを表示して終了します。
- 出力ディレクトリの作成:
- リサイズされた画像を保存するためのディレクトリ (
resized_jpeg
) を作成します。既に存在する場合は何もしません。
- リサイズされた画像を保存するためのディレクトリ (
- JPEGファイルの処理:
- 各JPEGファイルに対して、以下の処理を行います:
- 画像を開く。
- 画像を横幅1000ピクセルにリサイズ。縦横比は維持されます。
- 画像をJPEG形式で新しいファイル名で保存。
- 各JPEGファイルに対して、以下の処理を行います:
- メイン処理:
- ユーザーにディレクトリの入力を求めます。
- 入力されたディレクトリが存在する場合、
resize_jpeg_images
関数を呼び出して処理を実行します。存在しない場合は、エラーメッセージを表示します。
作成した全体のソースコード
全体のソースコードは以下の通りです。
from PIL import Image
import os
import glob
def resize_jpeg_images(input_directory):
# 指定されたディレクトリ内のすべてのJPEGファイルを取得
jpeg_files = glob.glob(f"{input_directory}/*.jpg") + glob.glob(f"{input_directory}/*.jpeg")
# JPEGファイルが存在しない場合は終了
if not jpeg_files:
print("JPEGファイルが見つかりませんでした。")
return
# 出力ディレクトリを作成(存在しない場合)
output_directory = os.path.join(input_directory, "resized_jpeg")
os.makedirs(output_directory, exist_ok=True)
for jpeg_file in jpeg_files:
# 画像を開く
img = Image.open(jpeg_file)
# 縦横比を維持しながらリサイズ
aspect_ratio = img.height / img.width
new_height = int(1000 * aspect_ratio)
img_resized = img.resize((1000, new_height))
# JPEG形式で保存
output_file_name = os.path.basename(jpeg_file)
output_file_path = os.path.join(output_directory, output_file_name)
img_resized.save(output_file_path, "JPEG")
print(f"{jpeg_file} を {output_file_path} にリサイズしました。")
if __name__ == "__main__":
# ユーザーにディレクトリを入力させる
input_directory = input("JPEGファイルが保存されているディレクトリを入力してください:")
# ディレクトリが存在するか確認
if not os.path.exists(input_directory):
print("指定されたディレクトリが存在しません。")
else:
resize_jpeg_images(input_directory)
実行結果
プログラムを実行すると、以下のようにコマンドラインに表示されますので、対象となるディレクトリのパスを入力します。
JPEGファイルが保存されているディレクトリを入力してください:
処理が実行され、以下のように結果が表示されます。
これでリサイズ処理が正常に完了しました。
まとめ
この記事では、Pythonを使用してJPEG画像を自動的にリサイズするプログラムの作成方法を紹介しました。
この手法を使えば、画像の一括処理が簡単かつ迅速に行え、特にWebサイトの画像管理に大きなメリットをもたらします。
それでは、また次の記事でお会いしましょう。
コメント