[Python]Pillowで画像サイズを揃える
今回は、PythonライブラリのPillowを使って、写真を同じサイズに揃える方法を紹介します。
社員情報を可視化するサイトを構築していて、顔写真を同じサイズに変換する必要があったことが背景です。これについては別途マガジンを作って記事を書こうと思っていますが、とりあえずtips的なエントリを…
カレントディレクトリ配下のjpgファイルすべてを高さ200pxに揃え、
ファイル名末尾に"_h200"を付与して同じディレクトリに保存するコードが以下です。
import os
import glob
from PIL import Image
files = glob.glob('./*.jpg') # 変換元ファイル
h_resize = 200 # 変換後の高さ(px)
for f in files:
try:
img = Image.open(f)
img_resize = img.resize((int(img.width * h_resize / int(img.height)), h_resize))
ftitle, fext = os.path.splitext(f)
img_resize.save(ftitle + '_h200.jpg')
except:
pass
resizeメソッドは
img.resize(width, height)
の形式で引数を取ります。
この例では、画像のアスペクト比を維持できるように、変換後の画像幅を
元画像の横幅×(変換後の高さ/変換前の高さ)
として指定しています。
また、圧縮方法を指定する引数もあります。
img.resize(size=(width, height), resample=Image.NEAREST)
resample= は以下から指定します。
下に行くほど高画質で処理は低速です。
NEAREST
BOX
BILINEAR
HAMMING
BICUBIC
LANCZOS
今回は以上です。