きっかけ
iPhone で写真を撮ると、デフォルトの画像形式が HEIC たるものに。で、このフォーマットをふと調べてみたところ、HEIF というコンテナがなんとやら・・・。
(新しいだけあって圧縮率は良いみたいだが、互換性のが欲しいからすぐ JPG に設定変えたけど・・・。)
せっかく調べてみたので、改めて最近の画像フォーマットについてまとめることにしました。(本当に全部正しい情報かどうかは保証できませんので、その点はご注意ください。)
[2022/11/07 編集]
よく調べたら AVIF も割と注目されてるっぽい?ので、記事内容の構成を変更。
(前提知識) コーデックとコンテナの話
画像や動画などのメディアにおいては、一言にフォーマットと言っても「コーデック」と「コンテナ」に分けられます。
- コンテナ
- ファイルへの格納方法を定義したもの
- これ自体は圧縮方式などについて定義されていない
- コーデック
- データの表現方法を定義したもの
- データの圧縮方法も指すが、必ずしも「コーデック = 圧縮」ではなく、非圧縮でのデータ表現方法も一つのコーデックと言う
HEIF について
MPEG によって策定された、コンテナフォーマットです。英語の Wikipedia を見ると、以下のコーデックに対応しているみたいです。
- HEVC (H.265) ... 後述の HEIC
- AVC (H.264)
- AV1 (AOMedia Video 1) ... 後述の AVIF
- JPEG
(AVC と JPEG はあまり使用されていない様子?)
HEVC、AVC、AV1、いずれも動画の圧縮方式 (コーデック) で、それが静止画に応用された形です。
HEIC について
ISO、IEC、ITU-T によって策定された、HEVC (H.265) 動画コーデックを応用した画像フォーマットです。
iPhone のカメラにて、デフォルトの形式でコレが採用されています。
AVIF について
非営利団体の AOMedia Video 1 によって開発された、AV1 動画コーデックを応用した画像フォーマットです。
AOMedia Video 1 は業界団体で、オープンでロイヤリティフリーのコーデック開発を目的としているみたいです。もちろん、この AV1 もフリーです。
Webp について
Google によって開発された、RIFF コンテナ、VP8 コーデックを採用した画像フォーマットです。
圧縮効率を高めてネットワークのトラフィックを削減し、Web の動作をより向上させることが目標のようです。また、PNG のような輪郭のクッキリした画像にも、JPEG のような複雑な色彩の画像にも対応した設計だとか。
ライセンスについての話
HEVC (H.265) は、いくつかの特許技術を用いて作られており、対応するソフトの作成にはライセンス料を支払う必要が出てきます。また、各特許の所有は 1組織にまとまっておらず、手続きが煩雑だとか。
それを良しとしないか、Google は HEIF/HEIC の普及にあまり積極的でない様子。かわりに、WebP はライセンスフリーで提供されています。AVIF (AV1) も、同じくライセンスフリーで公開されています。
付録: 昔からあるフォーマットをおさらい
[2022/11/11 編集]
本タイトルとほぼ関係無い話だったので折りたたみました。
表示
(ここで、昔/新しいというのは、2022/11/06 記事執筆時点から見た体感です。)
フォーマット | 概要 |
---|---|
JPEG |
非可逆圧縮 - ラスタ 主にカメラで撮影した写真の保存に向いている。特性上 JPEG ノイズが生じるが、カメラ映像では基本気にならない。 |
PNG |
可逆圧縮 - ラスタ ペイントソフトで描いた図形などに向いている。JPEG ノイズのようなものは生じない。 |
GIF |
可逆圧縮 - ラスタ 複数レイヤを保存でき、アニメーション表示できる。古い規格で、1画像で 256色までしか対応していない。(現在は 256*256*256色対応が普通) |
BMP |
非圧縮 - ラスタ 圧縮が無いので復元に負荷がかからない。非圧縮なので、当然ファイルサイズは大きい。 |
SVG |
非圧縮 - ベクタ アイコンやロゴなどに使われる。拡大・縮小しても、輪郭がクッキリ表示される。 |
ちなみに、GIF アニメーション表示と同様の機能は、実は PNG にも策定されている。ただ、サポートしている所はかなり少ない模様。
- ラスタ
- 点の集まりで画像を表現する方法
- 解像度 (鮮明さ) に応じて、データサイズは指数関数的に上がる
- ベクタ
- 線や面の図形情報で画像を表現する方法
- 表現できる画に限りはあるが、理論上解像度は無限になる
余談
iPhone で HEIC フォーマットに始めて出会ったとき、「あんだよ Apple の独自規格かよぉ!?」とか思ったんですが、独自規格ではなかったっていう。悪口言ってゴメンね Apple・・・。
でも、Windows や Adobe は、HEIC の普及にあまり積極的じゃなさそう。Windows だと、有料の拡張機能のインストールが必要だとか。Linux でもフリーのライブラリは出ていますが、読み込みのみで書き込み非対応だとか。 (読み書き対応されてたらしい。) ブラウザも対応している所は多くなさそう。
ライセンスを気にせず安心して使えるあたり、WebP は有利。(実際、主要ブラウザは WebP 表示対応済み。) PNG や JPEG の使い分けを気にする必要が無くなるなら、これも高得点。Web アプリなんかで、入力された画像を処理するとなったとき、何も考えず放り込んで WebP にしてしまえば良いなら、開発も楽になります。 可逆と非可逆と選ぶらしいので、多分配慮必要。まだまた調べが甘かった・・・。
あ、ちなみに JPEG 画像は、最適化をすることによって、場合によっては品質を変えることなくファイルサイズを縮めることができます。個人的オススメは mozjpeg です。(Google の guetzli も良さそう。) mozilla 製でオープンソースのフリー。あれ?HEIC 要らんくね?