AVIF ファイルとは:最新の画像形式と、それを読めないソフトたち
AVIF の成り立ち、実際にどのくらい小さいのか、ツールが受け付けないときに何に変換すべきかを解説。AVIF はブラウザ内で変換でき、アップロード不要です。
概要
- 種類
- 画像
- 拡張子
- .avif
- MIME タイプ
- image/avif
AVIF は、動画コーデックの仕組みで包まれた静止画です。HEIF コンテナに AV1 のキーフレームを格納したものです。AV1 は HEVC に対抗するロイヤリティフリーのコーデックとして 2018 年に Alliance for Open Media から登場し、そのフレーム内符号化を写真に使うと、それまでのあらゆる形式を上回ることがわかりました。同じ画質で WebP よりたいてい 20〜30% 小さく、JPEG に対しては大きく引き離しています。
続きを読む
さらに、JPEG にはできなかったことにも対応しています。アルファチャンネル、ハイダイナミックレンジ、広色域、10 ビットや 12 ビットの色深度です。ファイルが JPEG より小さい形式としては驚くべき組み合わせで、ページの重さを気にするサイトが、対応するブラウザに AVIF を配信し始めているのはそのためです。
そして、ここから問題が始まります。ブラウザは AVIF をデコードでき、Chrome、Firefox、Safari のどれもが対応していますが、それ以外の多くのソフトは対応していません。画像編集ソフト、オフィスソフト、印刷のワークフロー、古いスマートフォン、アップロードフォームなどです。最近のサイトで画像を右クリックして保存したら、手元のどのソフトでも開けないファイルだった、というのはもうありふれた体験で、AVIF から変換するのがその解決策です。
ブラウザにできることには非対称な点があることに注意してください。ブラウザは AVIF をデコードできてもエンコードはできないため、ここでは AVIF からの変換は使えますが、AVIF への変換は壊れたまま出す代わりに利用不可としています。変換先の選び方としては、どこでも開ける必要がある写真なら JPG、残すべき透過部分がある場合やこれから編集する場合は PNG です。どちらも元の AVIF よりかなり大きくなると考えておいてください。
AVIF を他の形式に変換
AVIF:よくある質問
AVIF ファイルが開けないのはなぜですか?
新しい形式だからです。ブラウザはデコードできますが、多くの画像編集ソフト、オフィスアプリ、印刷のワークフロー、古いデバイスはまだ対応していません。
AVIF は本当に WebP や JPEG より優れていますか?
圧縮の面では優れています。同じ画質で WebP よりたいてい 20〜30% 小さく、JPEG に対しては大きく引き離しています。さらに JPEG にはない透過、HDR、広色域にも対応しています。
ここで画像を AVIF に変換できますか?
まだできません。ブラウザは AVIF をデコードできてもエンコードはできず、このサイトはブラウザ自身のコーデックを使っています。その方向は、失敗するものを出す代わりに利用不可としています。
AVIF は JPG と PNG のどちらに変換すべきですか?
どこでも開ける必要がある写真なら JPG です。透過部分がある画像や、これから編集する画像なら PNG です。AVIF はここで扱う中で最も効率的な形式で、PNG は最も効率の低い形式の 1 つなので、PNG は劇的に大きくなります。
変換後のファイルは大きくなりますか?
ほぼ確実に、しかもかなり大きくなります。AVIF のほうがはるかに効率的なので、古い形式で同じ画質にするにはより多くのデータが必要です。サイズではなく互換性のために変換していると考えてください。
AVIF は透過に対応していますか?
はい、完全なアルファチャンネルに対応しています。ロゴや切り抜き画像なら、JPG ではなく PNG が正しい変換先なのはそのためです。
AVIF は非可逆ですか、可逆ですか?
両方のモードがあり、Web 上の AVIF ファイルのほとんどは非可逆です。そのため PNG に変換すればそれ以上の劣化は止められますが、すでに失われたものを元に戻すことはできません。
HEIC は同じものですか?
関係はありますが、同じではありません。HEIC は同じ HEIF コンテナに HEVC を入れたもので、iPhone が作るのはこちらです。HEIC を標準でデコードできるのは Safari だけなので、このサイトでは WebAssembly にコンパイルした libheif でデコードしています。そのため、ここでも HEIC を JPG や PNG に、アップロードなしで変換できます。