【pythonista3】Pillowモジュールで画像を編集するImageOpsモジュールの使用例9選
pythonスクリプトでjpgやpmgなどの画像を加工、作成することが出来る。
簡単な画像処理にPillowモジュールが使われる。このモジュールは、読み込んだ画像をもとに新たな画像の作成、保存が出来る。
iOSアプリのpythonista3には標準でこのモジュールがあるがver1.1.7と古い。(2020年5月現在。)
pythonista3内でPillowモジュールが出来ることを紹介する。
以下では、次の6つの操作を説明する。
使用環境
- ハード: iPad第6世代
- OS: iOS13.4.1 (17E262)
- 開発環境:pythonista3 app
- python ver 3.6.1
- モジュール Pillow ver 1.1.7
使っているアプリの都合上、Pillowモジュールが古い。そのため関数の引数など現在の仕様が若干異なる場合がある。
Pythonista3では最初からPillowモジュールが入っているためインストールは必要がない。
使い方
以下では次の画像を元にする。
この画像をsample.png
とする。
この画像をsample1.png
とする。
向き反転
左右反転
例1
画像の左右を反転する。
- 実行結果
from PIL import Image,ImageOps # 画像読み込み img=Image.open('sample.png') # 左右反転 out=ImageOps.mirror(img) # 画像を保存 out.save('pillow-ops-1.png')
- 解説
mirror
メソッドで左右反転する。引数に反転する画像を指定する。
結果=ImageOps.mirror(画像オブジェクト)
上下反転
例2
画像の上下を反転する。
- 実行結果
from PIL import Image,ImageOps # 画像読み込み img=Image.open('sample.png') # 上下反転 out=ImageOps.flip(img) # 画像を保存 out.save('pillow-ops-2.png')
- 解説
flip
メソッドで上下反転する。引数に反転する画像を指定する。
結果=ImageOps.flip(画像オブジェクト)
単純化
例3
色のビット深度を落として単純化する。
- 実行結果
from PIL import Image,ImageOps # 画像読み込み img=Image.open('sample.png') # 色素を単純化 out=ImageOps.posterize(img,2) # 画像を保存 out.save('pillow-ops-3.png')
- 解説
posterize
メソッドで色を単純化する。引数で画像とビット深度を指定する。
結果=ImageOps.posterize(画像オブジェクト,ビット深度)
mod演算
例4
画像のすべてのピクセルで、指定した値より大きい値を剰余演算する。
- 実行結果
from PIL import Image,ImageOps # 画像読み込み img=Image.open('sample.png') # 引数の数値以上のピクセルをmad演算 out=ImageOps.solarize(img,192) # 画像を保存 out.save('pillow-ops-4.png')
- 解説
solarize
メソッドで剰余演算する。引数で画像と基準値を指定する。
結果=ImageOps.solarize(画像オブジェクト,基準値)
基準値よりも大きい値は255引き算される。
平均化
例5
画像のヒストグラムを平均化する。
- 実行結果
from PIL import Image,ImageOps # 画像読み込み img=Image.open('sample.png') # ピクセル値の平均化 out=ImageOps.equalize(img) # 画像を保存 out.save('pillow-ops-5.png')
- 解説
equalize
メソッドで単純化する。引数に元の画像を指定する。
結果=ImageOps.equalize(画像オブジェクト)
例6
もう一つ例を示す。
- 実行結果
from PIL import Image,ImageOps # 画像読み込み img=Image.open('sample1.png') # ピクセル値の平均化 out=ImageOps.equalize(img) # 画像を保存 out.save('pillow-ops-6.png')
ハイコントラスト
例7
画像のヒストグラムの最小値は0、最大値を255に補正する。
- 実行結果
from PIL import Image,ImageOps # 画像読み込み img=Image.open('sample.png') # 最小ピクセルを黒、最大ピクセル白に補正 out=ImageOps.autocontrast(img) # 画像を保存 out.save('pillow-ops-7.png')
- 解説
autocontrast
メソッドでハイコントラストにする。引数に元の画像を指定する。
結果=ImageOps.autocontrast(画像オブジェクト)
例8
もう一つ例を示す。
- 実行結果
from PIL import Image,ImageOps # 画像読み込み img=Image.open('sample1.png') # 最小ピクセルを黒、最大ピクセル白に補正 out=ImageOps.autocontrast(img) # 画像を保存 out.save('pillow-ops-8.png')
ネガポジ反転
例9
画像の色を補色にして反転する。
- 実行結果
from PIL import Image,ImageOps # 画像読み込み img=Image.open('sample.png') # ネガポジ反転 out=ImageOps.invert(img) # 画像を保存 out.save('pillow-ops-9.png')
- 解説
invert
メソッドでネガポジ反転する。引数に反転する画像を指定する。
結果=ImageOps.invert(画像オブジェクト)
まとめ
ImageOps
モジュールで次のような画像加工が出来る。
mirror
メソッド:左右反転flip
メソッド:上下反転posterize
メソッド:単純化solarize
メソッド:剰余演算equalize
メソッド:単純化autocontrast
メソッド:ハイコントラストinvert
メソッド:ネガポジ反転