こんにちは,モノトーンです。
Animated な画像を対応しようとして,Swift で小手先で書いていたのですが,WebP もせっかくだし対応したいなーって思ったのが割と作成のきっかけみたいな。
具体的な内容については本文で。
1. 作ろうと思ったきっかけ
そもそもが,他の WebP は画像の埋め込まれた ICC Profile をサポートしていなかったり,macOS 向けへの対応がされていないものなどが多いってのが理由でした。
今や,MacBook Pro は当たり前のように DCI-P3 D65 環境で実行されるのが基本となっており,ICC Profile なしの画像は本来 sRGB として扱うのですが,それをデバイスの色空間で扱ったりと,結構色空間周りの取り扱いは杜撰なものが多いです。
基本的にそれを是正する意味でも,この MTImage および MTImageView は意味があるのかな,と。
ただ,Pro Photo の ICC Profile を持つ画像を WebP 書き出しするとなんかおかしくなるようですが……w まあ表示さえ正確であれば,まず Pro Photo な色空間の画像を書き出すことはないと思うので,そんなケースには引っかからないでしょうが……
2. 主な機能
- GIF アニメーションやアニメーション PNG を(Core Graphics の機能に依存して)表示させます。
- 定義を見てもらえばわかるかと思いますが,古い OS では APNG のサポートがなかったりします。
- libwebp による WebP に対応しています。
- アニメーションサポートは不具合があります(WebP はそもそも表示がおかしいので,使えません)
まとめ
あんまりこればっかりに手をかけていると,もともとやっていたプロジェクトの開発が億劫になるので,そろそろそっちに戻るために一度切り上げるという形になりました。
今後は,AV1 の Still Image も出てくると思うので,HEIC や AVIC の still image よりも AV1 Still Image の対応の方が重要になるかなーって思ったりします。AV1 は早くて 2019 年から使われ出しますし,WebP の実装である VP8 コーデック自体ポンコツです。そして,HEIC の実装である HEVC (H.265) はパテント問題を抱えており,コンテンツ配信には向きません。
流石に,古いデバイスで AV1 動画デコードさせるとバッテリー消費の点で問題になりますが,1 フレームのデコードぐらいなら問題ないと思うので,AV1 still image とか今後機会があればサポートしたいかなーと。
あと,JPEG XR もなんとかなく対応すべきかな,って思っていたんですけど,JPEG XR のリファレンス実装がひどいのと,不具合修正されたものをちゃんと検証したりとか工数がかかりすぎるので,JPEG XR はないかも。個人的に JPEG XR は扱いやすいと思っているんですけどね。HEIC はパテントが絡んでくるので,コンテンツ配信面では少々だるいですし。
ざっと,書いてみました。まあ macOS 向けに使えるものって少ないですし,AppKit 対応は個人的に重要な分野なので,AppKit がどうなっているのか,把握も兼ねてって感じで今回の製作もさほど悪くなかったかな,と。