2020年4月16日木曜日

【Pillow】画像の縮小拡大(resize)、切り抜き(crop)

 画像処理ライブラリPillowImage.resizeにより画像を任意のサイズに拡大・縮小できる。また、Image.cropを使うと画像の任意の領域を切り抜くことができる。

Pillow(PIL)を使うためにはインポートが必要。PIL.Imageモジュールは通常以下の形式でインポートされる。

from PIL import Image

 例に用いる画像'image.jpg'は以下を使用。サイズは幅480ピクセル高さ320ピクセル(フリー写真素材ぱくたそより)





1. 画像拡大・縮小(Image.resize)

 画像に対してresizeメソッドを適用することで画像の拡大縮小が可能。引数に画像の幅と高さをタプルの形で与えることでそのサイズに変形される。

幅300px高さ150pxに変形する例。

from PIL import Image

# 元画像の読み出し
im = Image.open('image.jpg')
# 画像リサイズ
im_resized = im.resize((300, 150))
# ファイルの保存
im_resized.save('image_resized.jpg', quality=95)

実行結果




 元の画像サイズを基準にする、例えば元画像の幅・高さを半分にする場合にはwidth,heightで元画像の幅・高さを取得しその値を使用する。

from PIL import Image

# 元画像の読み出し
im = Image.open('image.jpg')
# 元画像の幅、高さを取得し半分に
(width, height) = (im.width // 2, im.height // 2)
# 画像リサイズ
im_resized = im.resize((width, height))
# ファイルの保存
im_resized.save('image_resized.jpg', quality=95)

実行結果




2. 画像切り抜き(Image.crop)

 cropメソッドにより画像から指定した範囲を切り取ることができる。範囲の指定は
(画像の左上のx座標, 画像の左上のy座標, 画像の右下のx座標,画像の右下のy座標)
の数字4つのタプルとなる。

(200, 100, 400, 250)を切り抜く場合

from PIL import Image

# 元画像の読み出し
im = Image.open('image.jpg')
# 画像切り抜き
im_croped = im.crop((200, 100, 400, 250))
# ファイルの保存
im_croped.save('image_croped.jpg', quality=95)  

実行結果




3. リファレンス

Pillow (PIL Fork) > Image.resize(size, resample=3, box=None, reducing_gap=None)
Pillow (PIL Fork) > Image.crop(box=None)

使用バージョン:Python 3.7.0 / Pillow 7.1.2

0 件のコメント:

コメントを投稿