はじめに
AtCoderでPythonの勉強をしていました。
少しずつ書き方を覚えたので、そろそろ実用的なスクリプトを書いてみたいなと思い、自分が必要としているものを作ってみることにしました。
環境
OS:Ubuntu 20.04LTS
言語:Python3.8.2
Pillowのバージョンは7.0.0です。
目的・用途
横長の画像を縦半分に分割したいときに使う。
スマホで見開き資料を読むときなんかに活用。
コード
import glob
from PIL import Image
import os
files = glob.iglob('/home/user/images/*.jpg')
for f in files:
img = Image.open(f)
x, y = img.size
box = img.crop((0, 0, x//2, y))
title, ext = os.path.splitext(f)
box.save(title + 'half1' + ext, quality=75)
box = img.crop((x//2+1, 0, x, y))
title, ext = os.path.splitext(f)
box.save(title + 'half2' + ext, quality=75)
os.remove(f)
コードの説明
ホームディレクトリ上に『images』というディレクトリを作成し、そこを作業用とします。
imagesに格納されている、拡張子が.jpgのファイルを全て検出します。
画像の左上を起点とし、x軸方向の中間座標を取得し、画像を半分に分割します。
半分に分割した画像の左側を、『元のファイル名+half1+拡張子』として保存します。
半分に分割した画像の右側を、『元のファイル名+half2+拡張子』として保存します。
元の画像を削除します。
※注意
スクリプトファイルは、作業用ディレクトリと同階層かつ、ホームディレクトリ上に置くと動作すると思います。
分割する元となった画像ファイルは、ゴミ箱ではなく削除になります。復活できません。
おわりに
初めて作成したスクリプトなので、書き方やそもそもの環境設定がおかしいかもしれません。
もっとスマートな書き方があれば、ご指摘をお願いいたします。
なお本スクリプトによる責任はご容赦ください。