【Python3】Pillowで画像のリサイズ(拡大・縮小)を行う方法

おはこんばんちは、せなです。

今回はPillowを使用して画像のリサイズ(拡大・縮小)を行う方法を説明したいと思います。

初めに

まずは単純なリサイズのコードを書いてみます。

image.resize(size=(300, 300))

これで画像のサイズが300×300になっているはずです。
さらに詳しい内容については下記に記載します。

resize()メソッドについて

Pillowでリサイズを行うにはresize()メソッドを使用します。

構文としては以下のようになります。

Image.resize(size, resample=None, box=None, reducing_gap=None)

パラメータについて

引数名説明
sizeリサイズのサイズを(幅, 高さ)で指定します。
resampleリサイズの補完方法を選択します。
・Image.NEAREST = 0
・Image.LANCZOS = 1
・Image.BILINEAR = 2
・Image.BICUBIC = 3
・Image.BOX = 4
・Image.HAMMING = 5
画像モードに16ビットを選択している場合は NEAREST がデフォルト
それ以外では BICUBIC がデフォルトに指定されます。
box画像のリサイズ範囲を指定します。(左, 上, 右, 下)
デフォルトには(0, 0, 画像の幅, 画像の高さ)が指定されています。
reduction_gap画像のサイズを変換して最適化を行います。
デフォルトは0です。

詳しい内容はドキュメントを確認してみましょう。
https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.resize

resize()の使い方

実際にresizeを使用するためのメソッドを作成してみます。

from PIL import Image

def resize_image(image, size, resize_mode=3, crop=(0, 0, 0, 0)):
    return image.resize(size, resample=resize_mode, box=crop)

if __name__ == '__main__':
    image = Image.open('hoge.png')
    size = (500, 500)
    resize_mode = 3
    crop = (0, 0, image.size[0], image.size[1])
    image = resize_image(image, size, resize_mode, crop)
    image.save('image_resize.png')

上記はsizeに500×500、resampleに BICUBIC 、boxに元サイズを指定するサンプルとなります。

※resizeではsize以外を指定する必要はありません。
※reduction_gapについては使用しているコードを見たこともないので基本的に使用する機会はないと思います。

最後に

ここまでお読みいただきありがとうございます。
画像のPillowは画像の操作でお世話になるライブラリなので積極的に活用していきたいですね。

ではでは〜

Python

Posted by sena