HEIC ファイル形式
High Efficiency Image Container。iOS 11 以降の Apple 標準の写真形式。
- MIME タイプ
- image/heic
- 拡張子
- .heic
- カテゴリ
- 画像
マジックナンバー(ファイル署名)
| 0x00000004 | 66747970 | ftyp | ISO-BMFF 'ftyp' box |
| 0x00000008 | 68656963 | heic | brand 'heic' |
HEIC 形式について
HEIC は HEVC で圧縮した静止画を HEIF コンテナに収めたもので、JPEG に比べて写真のサイズをおよそ半分にします。ISO-BMFF ファイルで、ftyp ブランドは heic です。ただし iPhone から届くものが 1 枚の絵であることはめったにありません。同じファイルがサムネイル、深度マップ、HDR ゲインマップ、そして編集内容を非破壊で記録したリストと手つかずのオリジナルを日常的に一緒に運んでいて、それらはすべてファイル前方の meta ボックスが索引する別々のアイテムです。JPEG との本当の違いはそこにあります。HEIC は小さな画像データベースであり、ビューアがどれを表示するかは、どのアイテムを primary と判断するかで決まります。
ヘッダーの構造(バイト単位)
| オフセット | 長さ | フィールド | 意味 |
|---|---|---|---|
| 0 | 4 | ftyp box size | ファイルタイプボックスの長さをビッグエンディアンで表したもので、メジャーブランド 1 つと互換ブランド 2 つなら 24 になります。ISO-BMFF の整数はすべてビッグエンディアンです。特別な値はコンテナのどこでも同じで、1 なら型の後ろに 64 ビットのサイズが続き、0 ならボックスはファイル末尾まで伸びます。 |
| 4 | 4 | Box type | 66 74 79 70。ファイルタイプボックスは必ず先頭に来るので、この 4 バイトが形式全体で唯一本当に固定された位置です。そして AVIF・HEIF・MP4・MOV・3GP と区別なく共有されています。 |
| 8 | 4 | Major brand | Main プロファイルの HEVC 静止画 1 枚なら 68 65 69 63。派生ブランドが変種をカバーしていて、Main 10 以上のプロファイルなら heix、画像シーケンスなら hevc と hevx、マルチビューなら heim・heis・hevm・hevs です。どれも HEVC で、会話の中ではどれも HEIC と呼ばれます。 |
| 12 | 4 | Minor version | 参考情報のみで、慣例的に 00 00 00 00 です。ブランドの改訂番号ではありませんし、ここに予期しない値が入っていることを理由にファイルを拒否してはいけません。 |
| 16 | variable | Compatible brands | ボックスの残りを埋める 4 バイトブランドのリストです。macOS は heic と mif1 を書き、iPhone はたいてい mif1・heic・miaf と、MiHB や MiHE のようなコーディング制約ブランドを書きます。リーダーは認識できるブランドが 1 つでもあればファイルを開いてよく、だからこそここに mif1 があってもそのファイルが HEIF になるわけではありません。 |
| 24 | 4 | Next box size | 24 バイトの ftyp の後に続くものの、ヘッダです。ボックスは各サイズを現在のオフセットに足しながらたどるだけで、他の索引も再同期の仕組みもないので、長さが 1 つ狂えばそれ以降がすべて失われます。 |
| 28 | 4 | Next box type | ほぼ必ず 6D 65 74 61、つまり meta です。その中では pitm ボックスが primary アイテムを指名し、iinf が全アイテムを型付きで列挙し、iloc が各アイテムのバイト範囲を与え、iprp が寸法や回転を含む属性を保持します。ビューアが何を表示するか決めるのに必要なものは、すべてそこにあります。 |
似た形式との見分け方
| 紛らわしい形式 | 見分け方 |
|---|---|
| AVIF | オフセット 7 までバイト単位で同一で、そこからオフセット 8 が 68 65 69 63 か 61 76 69 66 かで分かれます。構造としては meta とアイテムの仕組みまで含めて同じコンテナで、違いはアイテムデータを圧縮したコーデックが HEVC か AV1 かという点だけです。そしてその違いがファイルの開ける場所を決めます。HEIC には HEVC デコーダと特許ライセンスが要り、AVIF には要りません。Safari 以外のブラウザは HEIC を描画しません。 |
| HEIF | ここでもオフセット 8 のメジャーブランドです。heic はアイテムが HEVC であることを明確に主張し、mif1 はコーデックに依存しないブランドで、画像ファイルの構造に従っていることしか主張しません。ほぼすべての HEIC が互換ブランドにも mif1 を並べているので、ボックス内のどこかにある mif1 を拾うのは、HEIC ファイルを汎用の HEIF と報告してしまう典型的な検出器のバグです。 |
| QuickTime Movie | Live Photo は .heic の静止画と、同じコンテンツ識別子を持つ .mov の動画という組で届き、どちらもボックスサイズに続いて ftyp で始まります。分けるのはオフセット 8 のブランドで、heic か qt かです。そして MOV はサンプルを持つ trak ボックスを、HEIC は meta ボックス内のアイテムを持ちます。Live Photo が普通の静止画として届くことが多いのは、この組の片方しかコピーされていないからです。 |
| JPEG | オフセット 0 が FF D8 FF か、たいていは 00 00 00 18 になるボックス長かの違いです。その選択の裏にあるカメラ設定はトグル 1 つで、高効率なら HEIC、互換性優先なら JPEG を撮ります。Apple の転送経路は Windows マシンへ出す途中で HEIC を JPEG に変換もするので、同じ写真がコピーの仕方によってどちらの形式でも届きうるわけです。 |
よくある壊れ方
- HEVC デコーダが無いだけなのに壊れたファイルだと思われるケース。Windows で HEIC を開くには別途コーデック拡張のインストールが必要ですし、ほとんどのブラウザは今後も開けません。Apple のハードウェア以外ではどこでもエラーになるファイルは、まず間違いなく無傷です。修復を試す前に、オフセット 4 が ftyp、オフセット 8 が heic と読めることを確認してください。
- 途中切れ。meta ボックスは前のほうにあるので、寸法・向き・アイテム一覧は残り、欠けるのは画像データだけです。ビューアの反応はばらばらで、埋め込みサムネイルという別の、ずっと小さいアイテムを表示してしまうものもあり、原寸で開くまでファイルが無事に見えてしまいます。
- 表示されるアイテムが違うケース。HEIC は複数の画像を抱えていて、pitm ボックスが primary を指名します。pitm を無視して最初に見つけたアイテムをデコードするソフトウェアは、ユーザーが期待している絵ではなく深度マップやサムネイル、未編集のオリジナルを表示することがあります。破損に見えますが、リーダーのバグです。
- 変換で編集が失われるケース。iOS は調整内容を補助アイテムと手つかずのオリジナルという形で非破壊に保存するので、それを適用せずに primary アイテムだけ取り出す変換ツールを通すと、技術的には正しいのにすべての編集前の状態の写真が写ったファイルができます。そうなったことを警告するものは何もありません。
- ボックスサイズが中身と合っていないケース。走査はボックスツリー上のポインタ演算の繰り返しでしかないので、長さが 1 つ狂うとパーサはペイロードをボックスヘッダとして読み、以降のファイルを放棄します。報告されるエラーは、たいてい実際の破損場所から遠いボックスの名前を挙げてきます。
この形式の現在地
HEIC は 2017 年の iOS 11 以降すべての iPhone で、そして以後は多くの Android フラッグシップでも既定の撮影形式なので、これで publish する人はほとんどいないのに、生産量で言えば地球上で最も多く作られている画像形式のひとつです。同画質なら JPEG のおよそ半分のサイズで、JPEG が構造的に持ちえないものを運びます。10 ビット深度、アルファチャンネル、ポートレートのぼかし用の深度マップ、バーストや Live Photo のシーケンス、HDR ゲインマップ、非破壊の編集履歴です。これがウェブの形式になれなかった理由はライセンスでした。HEVC の特許は複数の保有者にまたがってプールされており、ブラウザベンダはデコーダの同梱を見送り、今日に至るまで描画できるのは Safari だけです。その空白を、同じコンテナでロイヤリティフリーのコーデックを使って埋めるために生まれたのが AVIF です。実務上の位置づけは、HEIC は撮影と保管の形式であり、その 2 つはとても得意で、Apple のエコシステムから出るものはすべて変換される、というものです。互換性を最大化したいなら JPEG、ウェブなら AVIF か WebP へ。Apple 自身のカメラ設定にある互換性優先は、そもそも HEIC を望んでいなかった人がその変換を要らなくするために存在しています。
HEIC ファイルをこのサイトで開く
どれもブラウザ内で動きます。ファイルが端末から出ることはありません。
関連する形式
HEIC と混同しやすい形式です。先頭バイトを見比べてください。