Linux

Ubuntu18.04でHEIC形式の画像ファイルをJPG、PNG形式に変換するための手順

はじめに

iOS 11からHEIF(high efficiency image file format)のフォーマットであるHEIC形式がiPhoneのカメラで撮影した画像の保存形式として採用されました。HEIFは高画質で圧縮率が高いです。しかし、UbuntuではこのHEIC形式の画像ファイルをデフォルトでは扱えないため、編集等をしたい場合はJPG形式やPNG形式に変換したり、もしくはHEIC形式を扱えるソフトウェアをインストールしたりする必要があります。この記事では、HEIC形式をJPG形式およびPNG形式に変換するためのコマンドラインツールをインストールし、実際にそのコマンドを使用して変換するところまでをまとめます。

できるようになること

以下のように、heif-convertというコマンドを使えるよう必要なパッケージをインストールし、このコマンドを使って指定したHEIC形式の画像ファイルをJPG形式、PNG形式に変換できるようになります。

$ heif-convert test.heic test.jpg
File contains 1 images
Written to test.jpg

## 2019/4/28 追記
以降の手順によってHEIC形式をJPG形式、PNG形式に変換できるようになりますが、複数ファイルを一括して変換等はできません。もし一括処理などより柔軟に処理をしたい場合は、最新版のImageMagickをインストールしてHEIC形式に対応させることをおすすめします。この手順については別途記事にまとめましたので、必要な方は見てみてください。

Ubuntuに最新版のImageMagickをインストールしてHEIC形式に対応させる手順

Ubuntu18.04でHEIC形式の画像を一括して処理したい状況になり、libheifというライブラリを試してみものの、まだ一括処理には対応していませんでした。そこで調べたところ、ImageMagickの最新版ならばlibheifを使ってHEIC形式に対応させることができることがわかりました。この記事では、最新版のImageMagickをUbuntu18.04にインストールし、さらにHEIC形式の変換もできるようにするための手順をまとめます。

前提と環境

以降の手順はUbuntu18.04での手順になります。

HEIC形式を変換できるパッケージをインストールする

2019年4月時点では、Ubuntu18.04はデフォルトの状態ではHEIC形式の画像をJPG、PNG形式に変換できるコマンドは用意されていません。しかし、これらの変換を可能とするコマンドツールを含む以下のlibheifというライブラリが公開されています。開発者様には感謝です。

strukturag/libheif – GitHub

libheif is a ISO/IEC 23008-12:2017 HEIF file format decoder and encoder.

今回はこのlibheifの中に含まれるlibheif-examplesを以下のようにインストールします。

$ sudo apt install libheif-examples
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  libheif-examples
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 11 個。
22.4 kB のアーカイブを取得する必要があります。
この操作後に追加で 93.2 kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 libheif-examples amd64 1.1.0-2 [22.4 kB]
22.4 kB を 0秒 で取得しました (61.5 kB/s)
以前に未選択のパッケージ libheif-examples を選択しています。
(データベースを読み込んでいます ... 現在 243155 個のファイルとディレクトリがインストールされています。)
.../libheif-examples_1.1.0-2_amd64.deb を展開する準備をしています ...
libheif-examples (1.1.0-2) を展開しています...
libheif-examples (1.1.0-2) を設定しています ...

libheif-examplesをインストールすると、以下の3つのコマンドが使用できるようになります。

コマンド名内容
heif-convertHEIC形式をJPEG形式、もしくはPNG形式に変換します。
heif-encJPEG形式、PNG形式をHEIC形式に変換します。
heif-infoHEIC形式ファイルのファイル情報を表示します。

以上でインストールは完了です。後は実際にheif-convert等のコマンドを使って変換してみます。

HEIC形式をJPG形式、PNG形式に変換する

heif-convertを使用します。以下のように、test.heicからtest.jpgを新たに生成します。

$ heif-convert test.heic test.jpg
File contains 1 images
Written to test.jpg

上記を実行するとtest.heicは残したまま、新しくtest.jpgを生成します。HEIC形式のほうが圧縮率が高いため、1.2MBのHEIC形式の画像ファイルをJPG形式に変換したところ、1.6MBに増えました。

PNG形式の場合も同様で以下のようになります。

$ heif-convert test.heic test.png
File contains 1 images
Written to test.png

なお、heif-convertには-qという画質調整のためのオプションが用意されています。

$ heif-convert
USAGE: heif-convert [-q quality] <filename> <output>

例えば、以下の様に画質を50%程度に調整してJPG形式に変換することも可能です。以下を実行すると、解像度は同じままでファイルサイズがは50%程度になりました。

$ heif-convert -q 50 test.heic test.png
File contains 1 images
Written to test.png

JPG形式、PNG形式をHEIC形式に変換する

heif-encを使用します。以下のように、変換したいファイル名を与えます。test-heic.jpgを与えると、同じファイル名のHEIC形式が出力されます。PNG形式の画像ファイルも変換可能です。

$ heif-enc test-heic.jpg

heif-encの場合は変換後に何もメッセージは表示されません。

なお、heif-encには以下のようなオプションが用意されています。

$ heif-enc
 heif-enc  libheif version: 1.1.0
------------------------------------
usage: heif-enc [options] image.jpeg

options:
  -h, --help      show help
  -q, --quality   set output quality (0-100) for lossy compression
  -L, --lossless  generate lossless output (-q has no effect)
  -o, --output    output filename (optional)
  -v, --verbose   enable logging output (more -v will increase logging level)
  -P, --params    show all encoder parameters
  -p              set encoder parameter (NAME=VALUE)

HEIC形式画像の情報を表示する

heif-infoを使うと、以下のように引数として与えたファイルの情報を表示できます。

$ heif-info test.heic
image: 3024x4032 (id=10), primary
  thumbnail: 240x320
  alpha channel: no
  depth channel: no

まとめ

ライブラリを1つ入れるだけで簡単にHEIC形式の画像をJPG形式やPNG形式に変換することができました。まだコマンドツール自体はデモの1つとして用意されている程度のようですが、それでもこのようなコマンドが提供されていると大変助かり感謝です。

SPONSORED LINK

コメントを残す

メールアドレスが公開されることはありません。