PythonでHEICの写真をJPGに変換する方法(pillow_heif.register_heif_opener)
概要
今回はiPhoneで撮影した写真をブログに挙げるために、写真を加工するためのツールをPythonで作成したので紹介していきます。
iPhoneで撮影した画像はheicという形式で保存されるので、windowsやLinuxだと少し扱いずらい形式になってしまうんですよね。。。
やはりwindowsで扱うならJPGを使用したいところ
しかも自分の保存用写真としても撮るので、高画質で容量が大きくブログには不向きとなります。
今まではこれをオンラインツールを使い頑張って変換してたのですが、この度pythonでツールを作ることに成功したので、紹介していきます。
めちゃくちゃ簡単にできますので、是非皆さんも試してみてください!
目次
やること
このツールで処理する内容としては下記の通り
- 形式の変更
- heicからjpgに形式を変更
- 画像サイズの圧縮
- 画像サイズを横1200pxまで下げる
- この時画像の縮小ではなく解像度を下げる方式で実装
処理対象は引数で指定したフォルダ内にあるheicファイルとしています。
実装
ライブラリインストール
今回使用するpythonのライブラリ「pillow」をインストールします。
コマンド
1 | pip install pillow pillow-heif |
ソースコード
pythonのソースは下記となります。
convert_heic.pyなど任意のファイル名で保存してください
convert_heic.py
1 | import argparse |
実行方法
実行方法は
任意のフォルダに変換したいheicファイルを配置し、
下記のコマンドを実行すれば実行できます。
コマンド
1 | python convert_heic.py input output --max-size 1200 |
- input
- 変換ファイルの配置フォルダ
- output
- 変換後ファイルの出力先フォルダ
- –max-size
- 縮小後画像の横幅(縦幅は自動調整される)
- –quality
- 画像の品質を指定(さらに画像サイズを小さくしたいときに使用)
inputフォルダにあるheicファイルを横幅1200pxに変換し、
outputフォルダにjpgファイルを出力する。
つまずきやすいポイント
実際に動かしてみると引っかかりやすい箇所があるので、補足しておきます。
「HEICファイルが見つかりません」と出る
iPhoneから取り出した写真は拡張子が大文字の「.HEIC」になっていることがあります。
上記コードの「*.heic」は小文字だけにマッチするため、LinuxやMacでは大文字のファイルが拾われません。
(windowsは大文字小文字を区別しないのでそのまま動きます)
大文字小文字をまとめて拾いたい場合は、下記のように直すと確実です。
大文字の.HEICも拾う
1 | heic_files = [ |
画像が開けずエラーになる
「pillow_heif.register_heif_opener()」を呼び忘れると、PILがHEICを認識できずに開けません。
HEICを扱うときは、Image.open()の前にこの1行を必ず実行しておきましょう。
ブラウザだけで変換したいとき
Python環境を用意するのが面倒な場合や、人に渡すPCで手早く変換したいときは、ブラウザ上だけでHEICを変換する方法もあります。
ファイルをサーバーに送らずブラウザ内で完結する仕組みなので、サクッと数枚だけ変換したいときに便利です。
ブラウザだけでHEICをPNGに変換する方法(heic-to × WebAssembly)🔗 shinpinoshi.com
大量の写真をまとめて処理したいなら今回のPython版、と用途で使い分けるとよいですね(^^
締め
結構簡単に実装できますよね!
オンラインサイトを使うとセキュリティ的にも良くないし、なによりめんどいので
だいぶ手間を省けます!
サーバ費用を抑えて安く運営している人にとって画像のサイズが大きいと
検索順位に影響が出たりするので注意しないとですよね。。。
このツールとても便利なので是非皆さんも使ってみてください!
当サイトではこんな感じに便利なツールを作成したりしてます。
是非他のも見ていってください!
以上!
旅行が好きなので、写真は共有したいです!
それではお疲れさまでした。





