ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

Python - Pillow:Pythonで画像処理をする

初めに

 PillowはPythonで画像処理をするためのライブラリです。本記事は、Pillowの基本的な使い方をまとめます。

Pillow

Pillowとは

 Pillowは、Pythonで画像処理を行うためのライブラリです。画像の読み込み、表示、保存、リサイズ、トリミング、回転、フィルタ機能などさまざまな処理を行うことができます。

主な機能の使い方

(画像の指定)

from PIL import Image

# 画像ファイルのパスを指定
image = Image.open("image.jpg")

(画像の表示:画像ファイルを開く)

# 画像の表示
image.show()

(画像を保存)

# 保存したいファイル名と形式を指定
image.save("new_image.png")

(リサイズ)

# 画像を幅200px、高さ100pxにリサイズ
image = image.resize((200, 100))

(トリミング)

# 画像の左上100px × 100pxを切り取る
image = image.crop((100, 100, 200, 200))

(回転)

# 画像を90度回転
image = image.rotate(90)

(フィルター)

from PIL import Image, ImageFilter

# 画像にぼかしフィルタを適用
image = image.filter(ImageFilter.GaussianBlur)

 ImageFilterには、下のような種類があります。


使ってみた

やったこと
  • ウェブ上の画像をURLで取得
  • 画像を正方形になるように切り取る
  • フィルターでぼかしを入れる
  • フォルダ内に保存する
コード全文
from PIL import Image, ImageFilter
import requests
import io

def crop_square(pil_img, width, height):
    crop_size = abs(width - height) / 2
    if width >= height:
        return pil_img.crop((crop_size, 0, width - crop_size, height))
    else:
        return pil_img.crop((0, crop_size, width, height - crop_size))

    

def main():
    # 画像のURL
    url = "https://4.bp.blogspot.com/-xN3OofpDu2A/XAnvN3Vpj-I/AAAAAAABQmA/guSSixGZ6cYFey2lgEUnc5q3mEUj6quOACLcBGAs/s200/business_man1_1_smile.png"
 
    response = requests.get(url)

    # 画像ファイルのパスを指定
    image = Image.open(io.BytesIO(response.content))

    im_thumb = crop_square(image, image.width, image.height)
    im = im_thumb.filter(ImageFilter.GaussianBlur)
    im.save("image.png")

if __name__=="__main__":
    main()

(実行結果)

実行前 実行後
https://4.bp.blogspot.com/-xN3OofpDu2A/XAnvN3Vpj-I/AAAAAAABQmA/guSSixGZ6cYFey2lgEUnc5q3mEUj6quOACLcBGAs/s200/business_man1_1_smile.png