よちよちpython

独習 python/Qpython/Pydroid3/termux/Linux

画像ファイルを回転させ保存するコマンドラインツール

ブログに画像をアップするとき、Pythonで自作したコマンドラインツールでExif情報を削除しています。削除する理由はプライバシー保護と画像サイズを軽くする為です。
(参考/ スマホ撮影の画像は約10MB→Exif削除→3MB)

しかし困ったことに、Exif情報を削除すると画像が勝手に90度回転してしまう場合がある。たとえばスマホで縦向きに撮った画像からExif情報を削除すると横向きになったりする。

今回は画像を簡単に回転させて正しい向きで保存させるプログラムを作ります。



作業環境と仕様


Androidスマホ
termux
Python3.8


これから作るプログラムはターミナルから動かします。
画像ファイル名をコマンドライン引数で渡して実行します。



実装


画像処理ライブラリのpillowを利用します。インストールが必要です。

pip install pillow


ライブラリ名はPillowですがインポートするときはPILです。

# ライブラリのインポート
from PIL import Image
import sys

# 画像ファイル名をコマンドライン引数で取得
file_name = sys.argv

# 画像ファイルをオブジェクトに変換
im = Image.open(file_name[1])

# 時計回りに90度回転させる
im_rotate = im.rotate(-90, expand=True)

# 同じファイル名で保存する(上書き保存)
im_rotate.save(file_name[1])

プログラム名を付けて保存。(何とか.py)



使用上の注意


im.rotate(-90, expand=True) はpillowのrotateメソッドで画像を回転させている部分。

  • カッコ内の数字を変えると回転角度が変わります。
  • マイナスをつけると右回転。
  • expand=Trueをつけると画像全体を含む画像になる。省略すると回転前の枠内のサイズで回転する(はみ出る部分がカットされてしまう)



実行はターミナルで行います。

python プログラム名.py 画像ファイルパス.JPG



欠点は使いにくいことw。ファイル選択ダイアログから画像を選んで簡単に回転・保存できるアプリがあればそちらを使う方が早い。

【参考】



以上です。