一括で画像ファイルをリサイズしてWebPに変換します。
Pillowで画像を画像ファイルをリサイズしてWebPに変換する
- pip で Pillow をインストール
- resize() で画像をリサイズする
- save() で拡張子を
.webp
に変更して画像を保存する
目次
画像処理ライブラリ Pillow
PIL と Pillow
PIL(Python Imaging Library)は、2011年まで開発が進められていた画像処理ライブラリです。
そして、現在では開発が停止しています。
そんなPILをフォークして作られた画像処理ライブラリが Pillow です。
各種形式の画像ファイルの読み込み・操作・保存を行う機能が提供されています。
Python Pillow
Python Pillow. Pillow: the friendly PIL fork. Python Imaging Library.
pip インストール
以下のコマンドでライブラリをインストールします。
pip install pillow
Pillowで画像をリサイズしてWebPに変換する
ソースコード
from PIL import Image
import glob, os
import sys
# 変換したい画像フォーマット
IMG_FORMAT = 'webp'
# 圧縮品質
COMPRESS_QUALITY = 65
# 変換前の画像を格納したフォルダ名
ORIGINAL_IMG_DIR = 'original/'
# 変換後の画像を格納したフォルダ名
CONV_IMG_DIR = 'convert/'
# 格納先フォルダがなければ作成する
os.makedirs(CONV_IMG_DIR, exist_ok=True)
# 画像を取得する
files = glob.glob(ORIGINAL_IMG_DIR + '*.jpg')
# 画像をリサイズしてwebpにして保存する
for file in files:
file_name = os.path.splitext(os.path.basename(file))[0]
img = Image.open(file).convert('RGB')
# 半分のサイズにリサイズします(整数指定)
resized_img = img.resize((img.width//2, img.height//2))
# 拡張子を変更して保存
resized_img.save(CONV_IMG_DIR + file_name + '.' + IMG_FORMAT, quality=COMPRESS_QUALITY)
実行手順
画像をoriginalフォルダに格納する
対象のJPEG画像をimg-resize.pyファイルと同階層のoriginalフォルダに格納しておきます
img-resize.pyを実行します
python img-resize.py
WebP画像がconvフォルダに格納されます
半分のサイズにリサイズされたWebP画像が保存されていることを確認しましょう
補足
COMPRESS_QUALITY
は調整してください。
低いほど、圧縮され容量が小さくなります。
まとめ
ブログに画像を上げる際など、大量の画像を小さくしたい時に役立つかなと思います。
大量の画像を一括でリサイズと同時にWebPに変換したかったのでPythonを活用してみました!
圧縮やWebPに変換したい場合は、以下のサイトを使ってみるのもありです。
SquooshはUIがオシャレです。単体画像であれば、Squooshがおすすめです!
Squoosh
Squoosh is the ultimate image optimizer that allows you to compress and compare images with different codecs in your browser.
PNG・JPEGをWebP画像に一括変換
Web(ブラウザ)上ですぐに使えるWebP変換ツールです。複数の画像をまとめてWebP形式に変換できます。
Pillowを使った画像の生成やリサイズについては、以下の記事を参考にしてみてください
Pythonライブラリ Pillow で画像生成&保存する
Pythonの画像処理ライブラリ「Pillow」を使って画像を生成して保存します。検証で大量の画像が必要な場合など、サクッと実装して実行できるので便利です。
Python ライブラリ Pillow で画像をリサイズする
Pythonの画像処理ライブラリ「Pillow」を使って画像をリサイズします。Pillowを使えば、簡単に画像データを加工することができます。
ポチップ
コメント