Pillowで画像(画像データ)を拡大/縮小するには、Imageクラスのrotateメソッドを用います。
構文
Image.rotate(angle, resample=0, expand=0, center=None, translate=None, fillcolor=None)
パラメータ
引数名 | 説明 |
angle | 回転角度を度数(°)で指定します。 |
resample | 回転時の補間方法を指定します。 Image.NEAREST Image.BILINEAR Image.BICUBIC (参考)画像のリサイズ、補間指定 |
expand | Trueのとき、画像が回転しても画像全体が表示されるよう画像サイズを拡張します。 False(初期値)のとき、画像が回転するしたときにはみ出した部分が切り取られます。 ただし、画像回転の中心は画像の中心で、平行移動が無い事を想定しています。 |
center | 回転の中心座標を(x, y)のタプルで指定します。 初期値:画像の中心 |
translate | 回転後の移動量を(Tx, Ty)のタプルで指定します。 |
fillcolor | 画像の外側の色を指定します。 初期値:黒 |
戻り値 | 回転した画像(PIL.Image) |
サンプル
from PIL import Image
# 画像を開く
img = Image.open("image.bmp")
# 画像を回転する
img_rotate = img.rotate(30)
# 回転した画像の保存
img_rotate.save("image_rotate.bmp")
(実行結果)
元画像 | 回転画像 |
画像がはみ出さないようにする
expand = True に設定することで、画像がはみ出さないよう、画像サイズを自動で拡張し調整します。
(例)
img_rotate = img.rotate(30, expand = True)
(結果)
画像の外側の色の指定
画像の外側の色をfillcolorに指定します。
(例)
img_rotate = img.rotate(30, fillcolor = "Blue")
(結果)
参考
https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.rotate
https://pillow.readthedocs.io/en/stable/handbook/concepts.html#concept-filters