【pythonista3】Pillowモジュールで画像を編集する(回転とリサイズ)メソッドの使用例7選
pythonスクリプトでjpgやpmgなどの画像を加工、作成することが出来る。
簡単な画像処理にPillowモジュールが使われる。このモジュールは、読み込んだ画像をもとに新たな画像の作成、保存が出来る。
iOSアプリのpythonista3には標準でこのモジュールがあるがver1.1.7と古い。(2020年3月アップデート版現在。)
pythonista3内でPillowモジュールが出来ることを紹介する。
以下では、次の2つの操作を説明する。
- リサイズ
- 回転
使用環境
- ハード: iPad第6世代
- OS: iOS13.4.1 (17E262)
- 開発環境:pythonista3 app
- python ver 3.6.1
- モジュール Pillow ver 1.1.7
使っているアプリの都合上、Pillowモジュールが古い。そのため関数の引数など現在の仕様が若干異なる場合がある。
Pythonista3では最初からPillowモジュールが入っているためインストールは必要がない。
使い方
お借りした画像のリソース
以下では、次の画像をベースに説明する。

上の画像をsample.jpgとする。
リサイズ
画像のサイズを変更する。
例1
画像を2倍にする。
- 実行結果

from PIL import Image # 画像読み込み img=Image.open('sample.jpg') # サイズ取得 w,h=img.width,img.height out=img.resize((w*2,h*2)) # 画像を保存 out.save('pillow-resize-1.png')
- 解説
引数でリサイズ後のサイズを指定する。 幅と高さをピクセル単位でtupleにして渡す。 戻り値はリサイズされた画像オブジェクトになる。
output = Imageオブジェクト.resize((画像の幅,画像の高さ))
元の画像のサイズを利用することで、縦横比を保ったまま拡大、縮小出来る、
例2
任意のサイズにすることも出来るが、縦横に引き伸ばされてしまうことがある。
- 実行結果

from PIL import Image # 画像読み込み img=Image.open('sample.jpg') # サイズ取得 w,h=img.width,img.height out=img.resize((300,300)) # 画像を保存 out.save('pillow-resize-2.png')
回転
画像を回転させる。
例3
90度左回転させる。
90度単位で回転させると、画像の縦横幅は自動的に調整される。
- 実行結果

from PIL import Image # 画像読み込み img=Image.open('sample.jpg') out=img.rotate(90) # 画像を保存 out.save('pillow-rotate-1.png')
- 解説
引数に回転角度を入れる。 正の値では左回転、負の値では右回転になる。
output = Imageオブジェクト.rotate(回転角度)
例4
90度右回転(-90度左回転)させる。
- 実行結果

from PIL import Image # 画像読み込み img=Image.open('sample.jpg') out=img.rotate(-90) # 画像を保存 out.save('pillow-rotate-2.png')
例5
180度回転させる。
- 実行結果

from PIL import Image # 画像読み込み img=Image.open('sample.jpg') out=img.rotate(180) # 画像を保存 out.save('pillow-rotate-3.png')
例6
斜めに回転も出来る。
30度右回転させる。
- 実行結果

from PIL import Image # 画像読み込み img=Image.open('sample.jpg') out=img.rotate(30) # 画像を保存 out.save('pillow-rotate-4.png')
- 解説
斜めに回転させるとはみ出る部分は切り取られる。 また、余白は黒く塗りつぶされる。 余白の色の指定は出来ない。
例7
斜めにして全体を表示させる。
- 実行結果

from PIL import Image # 画像読み込み img=Image.open('sample.jpg') # 回転後全体を出力 out=img.rotate(30,expand=True) # 画像を保存 out.save('pillow-rotate-5.png')
- 解説
引数expand=Trueとすると、はみ出した部分まで収まる画像になる。
まとめ
今回紹介したPillowモジュールの画像処理メソッドをまとめる。
- リサイズ:resize
- 引数:タプル型:(幅,高さ)
- 回転:rotate
- 引数:数値:回転角道