Navigation

Related Articles

Back to Latest Articles

Pillowを使って画像をクロッピングする


press
Pillowを使って画像をクロッピングする

Pillowを使って画像をクロッピングする方法です。
ソースコードはGitHubにあげています。

Pillowのインストール

$ pip install Pillow

バージョン確認

$ python -V
Python 3.7.0

$ pip freeze
Pillow==6.0.0

ディレクトリ構造

.
├── crop.py
├── cropimages  # クロップした画像の保存フォルダ
├── images  # 元画像フォルダ
└── venv

画像をクロッピング

from PIL import Image
from datetime import datetime
from time import sleep
import glob


def crop_center(org_img, width, height):
    img_width, img_height = img.size

    return org_img.crop(((img_width - width) // 2,
                         (img_height - height) // 2,
                         (img_width + width) // 2,
                         (img_height + height) // 2))


def crop_square(org_img):
    return crop_center(org_img, min(img.size), min(img.size))


files = glob.glob('./images/*')

for file_name in files:

    if file_name.endswith(('.png', '.jpeg', '.jpg')):
        img = Image.open(file_name)
        img = crop_square(img)
        time = datetime.now().strftime('%Y%m%d%H%M%S')
        path = './cropimages/' + time + '.jpg'
        img.save(path, 'JPEG', quality=100, optimize=True)

        sleep(1)

files = glob.glob('./images/*')
imagesフォルダ全ファイルを取得
if file_name.endswith(('.png', '.jpeg', '.jpg')):
拡張子が’.png’、’.jpeg’、’.jpg’かどうか判定
img = Image.open(file_name)
取得した画像を開く
img = crop_square(img)
長方形から最大サイズの正方形を切り出し
time = datetime.now().strftime('%Y%m%d%H%M%S')
画像ファイルのネーミング用に現在時間を取得
path = './cropimages/' + time + '.jpg'
保存用のパスを指定
img.save(path, 'JPEG', quality=100, optimize=True)
画像を保存
sleep(1)
1秒間スリープさせる
(スリープしないとネーミングの際に同時刻になってしまって全て書き出せない)


当ブログは群馬県でPython / Djangoを中心にウェブアプリケーションを開発している株式会社ファントムが運営しています。

株式会社ファントムへのお問い合わせ




Show Comments (0)

Comments

Related Articles

Python

名前に現在時刻を入れたファイルが連番かどうか判定(前半)

名前に現在時刻を入れたファイルが連番かどうか判定(前半) なにかアクションがあった際に生成されるファイル名に現在時刻が入ったファイルが、連番になっているかどうかを判別して連番になっていたらまとめてリスト化する方法です。手 […]

Posted on by press
Python

def文を用いて共通の処理を関数化する

以下の2つの記事の応用編です。 今回のポイントは以下の2つです。 ・気温の処理を関数化・Matplotlibで複数のグラフを出力 コードはGitHubリポジトリにあげています。 コード 出力結果 以下の様な気温と降水確率 […]

Posted on by press