heicな画像をJPGにするnpmで

先方から来るメールに画像が添付されているみたいなんだけど、どうしても開けませんとヘルプ。
どうしましたって行ってみたら拡張子はheic。あー。 iPhoneで撮ったのそのまま来て、Windowsで開けないパターンですね。

自分のMacがあるので、そいつでJPGにでも変換すればいいのだけれど、毎回毎回頼まれるのも困りもの。
普通はオンラインツールなりフリーソフトなりで解決しそうなところだけど、写真が取り扱い注意なものな場合あるしそんな多機能なものはいらないので、なんとかならんかとネットを徘徊する。

あった。npmにheic-convertってのが。

やること

  1. 元フォルダに画像を入れる
  2. heic-convertで変換
  3. 出力フォルダにJPG作成

コマンドを叩ける人がいないので、起動用にバッチファイルも。
基本的にすべてローカルな環境で動作させる前提。

やったこと

  1. パッケージをインストールする
  2. 複数の画像でも使えるようにする
  3. 起動用のバッチファイルを作る
  4. 設置

1.パッケージをインストールする

もうnode.jsはインストールしてあるので、フォルダ作って「heic-convert」をインストール。(npm initは先にしとくが吉)

npm install heic-convert

— フォルダ
—— app.js //←これに書いてく
—— package.json
—— src //←変換元heicを入れるフォルダ
—— dist //←変換してJPGができるフォルダ
—— node_modules
—— heicToJpg.bat //←起動用に使うバッチファイル
※PNGにもできるけど今回はJPGで。

処理を書く

あとは「Usage」見ながら。

app.jsっていう処理するjsを書く。
「Usage」に書いてあるのは1枚のheicの変換のことなので、複数枚でもまとめて変換できるように、フォルダ内のファイルを一覧にして.heicでフィルターして、変換リストを作る。
そのリストに対してforEachして1枚ずつ変換していく。

起動用バッチファイルを作成する

コマンドで実行してもらうのはハードルが高いので、起動するだけ用のバッチファイルを作る。

作った動機

そもそもheicってなんだっけ?っていうと

High Efficiency Image File Format (ハイ・エフィシエンシー・イメージ・ファイル・フォーマット、略称:HEIF、ヒーフ) は、Moving Picture Experts Group (MPEG) によって開発され、 MPEG-H Part 12 (ISO/IEC 23008-12) で定義された画像ファイルフォーマットである。 High Efficiency Image File Format – Wikipedia

でJPGとかより圧縮率が高い=データが軽いらしいのだけれど、現状は

2017年6月、アップルはmacOS High SierraとiOS 11でHEIFをサポートすると発表し、その秋に出荷した。HEVCのサポートにより、静止画/動画の圧縮率は最大2倍にまで高められる。2018年3月17日、マイクロソフトがWindows 10の最新版について、HEIFの対応を発表し、Insider Previewにて公開したが現在は有償でのサポートとなる。アドビも積極的にはサポートしておらず、例えば、代表的なソフトであるフォトショップもWindowsの有償拡張機能をインストールした環境のみで読み込むことができる。

ということで、Appleは押してるけど、それ以外はいまいちというところのようだ。
Windowsの拡張機能の拡張機能を1つだか2つだか入れれば、Windowsでも普通にheicを開けるようになるらしいのだけれど、引用の通り現在は有償みたい。(ちょっと前までは無償だったようだ)

ということで、久しぶりにコード書いたけど、楽しい。。

参考サイト