Pythonで画像を拡大縮小(リサイズ)する(Pillow編)

PythonのPillow(PIL)モジュールを使用して、画像のリサイズ(拡大・縮小)をします。

目次

  1. Pillowモジュール
  2. サンプルに使用する画像
  3. 縮小例
  4. 拡大例(NEAREST)
  5. 拡大例(BOX)
  6. 拡大例(BILINEAR)
  7. 拡大例(HAMMING)
  8. 拡大例(BICUBIC)
  9. 拡大例(LANCZOS)
  10. 元画像の一部を拡大した例

Pillowモジュール

Pillow(PIL)モジュール はPythonで画像を扱うときに使う便利なモジュールです。

リサイズ(拡大・縮小)をするには、resizeメソッドを使用します。

resized = im.resize(size, [resample], [box])
変数 内容
im Image リサイズされる元の画像のImageオブジェクト。
size tuple リサイズ後の画像のサイズ。(幅, 高さ)で指定する。
resample   省略可。既定値は0(PIL.Image.NEAREST)。補間方法。
box tuple 省略可。既定値はNone。拡大する範囲の指定。
resized Image リサイズされた画像のImageオブジェクト。

サンプルに使用する画像

プロ生ちゃん の画像をいろいろリサイズしてみます。画像サイズは256x256です。

元画像

縮小例

128x128への縮小です。

from PIL import Image

im = Image.open('original.png')

im_resize = im.resize(size=(128,128))
縮小

拡大例(NEAREST)

384x384(元画像の1.5倍のサイズ)への拡大です。resampleを指定しないと、PIL.Image.NEARESTが適用されます。

from PIL import Image

im = Image.open('original.png')

im_resize = im.resize(size=(384,384))
NEAREST

拡大例(BOX)

384x384(元画像の1.5倍のサイズ)への拡大です。PIL.Image.BOXを適用した場合です。

from PIL import Image

im = Image.open('original.png')

im_resize = im.resize(size=(384,384), resample=Image.BOX)
BOX

拡大例(BILINEAR)

384x384(元画像の1.5倍のサイズ)への拡大です。PIL.Image.BILINEARを適用した場合です。

from PIL import Image

im = Image.open('original.png')

im_resize = im.resize(size=(384,384), resample=Image.BILINEAR)
BILINEAR

拡大例(HAMMING)

384x384(元画像の1.5倍のサイズ)への拡大です。PIL.Image.HAMMINGを適用した場合です。

from PIL import Image

im = Image.open('original.png')

im_resize = im.resize(size=(384,384), resample=Image.HAMMING)
HAMMING

拡大例(BICUBIC)

384x384(元画像の1.5倍のサイズ)への拡大です。PIL.Image.BICUBICを適用した場合です。

from PIL import Image

im = Image.open('original.png')

im_resize = im.resize(size=(384,384), resample=Image.BICUBIC)
BICUBIC

拡大例(LANCZOS)

384x384(元画像の1.5倍のサイズ)への拡大です。PIL.Image.LANCZOSを適用した場合です。

from PIL import Image

im = Image.open('original.png')

im_resize = im.resize(size=(384,384), resample=Image.LANCZOS)
LANCZOS

元画像の一部を拡大した例

384x384(元画像の1.5倍のサイズ)への拡大です。元画像の一部分を切り出して拡大します。

from PIL import Image

im = Image.open('original.png')

im_resize = im.resize(size=(384,384), resample=Image.LANCZOS, box=(64,0,192,128))
部分拡大

広告

Pythonで画像処理カテゴリの投稿