画像処理ライブラリPillowのPIL.ImageOpsモジュールには様々な画像処理機能が用意されている。その中からImageOps.scaleによる画像の拡大縮小、ImageOps.cropによる画像トリミング、ImageOps.padによるパディング処理を説明する。
Pillow(PIL)を使うためにはインポートが必要。PIL.ImageOpsモジュールは通常以下の形式でインポートされる。
from PIL import ImageOps
例に用いる画像'image.jpg'は以下を使用(フリー写真素材ぱくたそより)
1. 画像の拡大縮小(ImageOps.scale)
ImageOps.scaleにより画像が拡大縮小される。factorが拡大縮小の倍率にあたる。書式は以下の通り。
PIL.ImageOps.scale(image, factor, resample=3)
factor=1.2の場合。
from PIL import Image, ImageOps # 元画像の読み出し im = Image.open('image.jpg') # posterize処理 im_scale = ImageOps.scale(im, 1.2) # ファイルの保存 im_scale.save('im_scale.jpg', quality=95)
実行結果
factor=0.5の場合。
from PIL import Image, ImageOps # 元画像の読み出し im = Image.open('image.jpg') # posterize処理 im_scale = ImageOps.scale(im, 0.5) # ファイルの保存 im_scale.save('im_scale.jpg', quality=95)
実行結果
2. 画像トリミング(ImageOps.crop)
ImageOps.cropにより画像がトリミングされる。borderに指定したピクセル数分画像の四方が削除される。書式は以下の通り。
PIL.ImageOps.crop(image, border=0)
borderを40とし、上下左右40ピクセル削る場合。
from PIL import Image, ImageOps # 元画像の読み出し im = Image.open('image.jpg') # 40ピクセルcrop処理 im_crop = ImageOps.crop(im, 40) # ファイルの保存 im_crop.save('im_crop.jpg', quality=95)
実行結果
3. パディング処理(ImageOps.pad)
ImageOps.padにより画像がパディング(余白が追加)される。sizeをタプルで(width, height)を指定、元画像のアスペクト比と指定したwidth, heightによるアスペクト比が縦長なら画像の上下に、横長なら画像の左右に枠が追加される。書式は以下の通り。
PIL.ImageOps.pad(image, size, method=3, color=None, centering=(0.5, 0.5))
元画像のwidth = 480、height = 320に対して、width = 480、height = 360を指定した場合。アスペクト比が縦長になるため上下に黒枠が追加される。
from PIL import Image, ImageOps # 元画像の読み出し im = Image.open('image.jpg') # pad im_pad = ImageOps.pad(im, (480, 360)) # ファイルの保存 im_pad.save('im_pad.jpg', quality=95)
実行結果
元画像のwidth = 480、height = 320に対して、width = 520、height = 320を指定した場合。アスペクト比が横長になるため左右に黒枠が追加される。
from PIL import Image, ImageOps # 元画像の読み出し im = Image.open('image.jpg') # pad im_pad = ImageOps.pad(im, (520, 320)) # ファイルの保存 im_pad.save('im_pad.jpg', quality=95)
実行結果
4. リファレンス
Pillow (PIL Fork) > ImageOps Module
0 件のコメント:
コメントを投稿