今シリーズは簡単なことはpythonでやってしまおう!!という精神の記事です。
今回は「python画像編集」シリーズその1
画像編集の基本である「切り出し」をやってみます!!
Pillow
画像処理で有名なのはOpenCV(Pythonではopencv-python)ですが、
簡単なことはPillowの方が手軽に行えます。
PillowとはPIL(Python Imaging Library)という画像ライブラリの後継です。
PILは開発が停止されましたが、Pillowは現在も開発が進められています。
インストール
まずPillowをインストールします。
pip install pillow
PillowとPILは共存出来ません。
両方インストールしてしまった場合は、まず両方ともアンインストールしてから片方だけをインストールしましょう。
準備
PillowからImageをインポートして、対象の画像を開いておきます。
from PIL import Image img = Image.open('sample.jpg')
今回は以下の画像でPillowを勉強します。
通常切り出し
切り出す領域はbox=(left, upper, right, lower)で指定します。
画像の左上を基準にピクセル長で切り出す位置を指定します。
切り出しと保存だけならたったの2行で完了。
img_crop = img.crop((400, 150, 1700, 1500))#切り出し img_crop.save('sample_crop.jpg', quality=95)#保存
こんな感じで切り出せます。
qualityは画質?ぽいです。1(悪い)~95(良い)の間で指定してください。
中心から切り出し
画像のサイズを基に中心から切り出すcrop_centerという関数を自作します。
def crop_center(img, crop_width, crop_height): img_width, img_height = img.size return img.crop(((img_width - crop_width) // 2,(img_height - crop_height) // 2,(img_width + crop_width) // 2,(img_height + crop_height) // 2))
切り出したい幅と高さをcrop_width,crop_heightに指定します。
後は関数を呼び出して使用します。
img_crop_center = crop_center(img, 1000, 2000) img_crop_center.save('sample_crop_center.jpg', quality=95)
このように切り出せました。
最大サイズの正方形の切り出し
長方形の画像から最大サイズで正方形を抽出してみます。
先ほど作成した関数crop_center()と併用して実現します。
画像の短辺(短い方の辺)をmin(img.size)で取得し、中心から切り出します。
こういうイメージで切り出します。
crop_centerはそのままで以下のコードに変えてください
img_crop_square = crop_center(img, min(img.size), min(img.size)) img_crop_square.save('sample_crop_square.jpg', quality=95)
このように最大サイズの正方形が切り出せました。
サムネイル画像やSNS投稿などに使えますね。
これで画像の切り出しの基本を学ぶことができました。
プログラミングの勉強で最も大切なのは目的があることだと思います!!
画像編集に興味がある方は、こういう所から学ぶのが良いかと思います。
Pingback: 「それ、pythonでできるよ」-画像の合成-