はじめに
この実験では、Python の Matplotlib ライブラリを使って既存の画像からサムネイルを生成するプロセスを案内します。サムネイルは、より大きな画像のプレビューを表示するために使用できる画像の小さなバージョンです。Matplotlib は画像を読み取るために Pillow ライブラリに依存しており、Pillow がサポートするすべての形式をサポートしています。
VM のヒント
VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替えて、Jupyter Notebook を使った練習にアクセスします。
時々、Jupyter Notebook が読み込み完了するまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題に直面した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
必要なライブラリをインストールする
まず、必要なライブラリをインストールする必要があります。ターミナルを開き、Matplotlib と Pillow をインストールするには、次のコマンドを入力します。
pip install matplotlib
pip install pillow
ライブラリをインポートする
このステップでは、前のステップでインストールしたライブラリをインポートします。それぞれ argparse と pathlib モジュールから ArgumentParser と Path をインポートする必要があります。また、それぞれ sys と matplotlib.image モジュールから sys と image モジュールをインポートします。
from argparse import ArgumentParser
from pathlib import Path
import sys
import matplotlib.image as image
引数を解析する
このステップでは、プログラムに渡された引数を解析します。ArgumentParser オブジェクトを作成し、imagedir という名前の引数を追加する必要があります。この引数は、画像が含まれるディレクトリのパスを指定します。引数のデータ型を指定するために type パラメータを使用できます。この場合、引数は Path 型でなければなりません。
parser = ArgumentParser(description="Build thumbnails of all images in a directory.")
parser.add_argument("imagedir", type=Path)
args = parser.parse_args()
ディレクトリを検証する
このステップでは、指定されたディレクトリが存在するかどうかを確認します。ディレクトリが存在しない場合、プログラムを終了してエラーメッセージを表示します。
if not args.imagedir.is_dir():
sys.exit(f"Could not find input directory {args.imagedir}")
出力ディレクトリを作成する
このステップでは、サムネイルが保存される thumbs という名前のディレクトリを作成します。ディレクトリが既に存在する場合は、再度作成されません。
outdir = Path("thumbs")
outdir.mkdir(parents=True, exist_ok=True)
サムネイルを生成する
このステップでは、指定されたディレクトリ内のすべての画像に対してサムネイルを生成します。指定されたディレクトリ内の .png 拡張子を持つすべての画像を for ループで反復処理します。各画像に対して、サムネイルを生成して thumbs ディレクトリに保存します。
for path in args.imagedir.glob("*.png"):
outpath = outdir / path.name
fig = image.thumbnail(path, outpath, scale=0.15)
print(f"saved thumbnail of {path} to {outpath}")
まとめ
この実験では、Python の Matplotlib を使って既存の画像からサムネイルを生成する方法を学びました。ライブラリのインポート、引数の解析、ディレクトリの検証、出力ディレクトリの作成、サムネイルの生成方法を学びました。この実験の手順に従えば、ディレクトリ内のすべての画像に対して簡単にサムネイルを生成できます。