こちらのページの画像をWebPに変換する機能を作っていて、そろそろ形になってきたかなと思ってSafariで確認してみたら、WebPを指定してるのにPNGになって書き出されてしまう現象に遭遇。
書き出し方はざっくりとこんな感じです。
const blob = await offscreenCanvas.convertToBlob({type:"image/webp", quality:1});typeを”image/webp”にしてるのに、SafariだとPNGになってしまう。Chromeだと問題ないです。
で、AIになんでやと聞いてみたら、WebPはGoogleが開発・推進するフォーマットだからAppleが慎重な姿勢を取っているとか、Apple的にはHEIF/HEICを推したがっているとかがあるみたいで、本当かどうかはわかりませんが、バグではなくただ未対応なだけみたいです。
SafariもWebPの表示は対応してるけど、WebPのエンコードは未対応ということなんですね。
というわけでSafariというか、上記の方法でWebPが作れない場合は、@jsquash/webpを使用するようにしました。
ただjsquashだからなのかSafariだからなのかわかりませんが、ちょっと処理が重いような気がしたり、Chromeより画質が悪いような気がするんですよね。
しかし私の力量では対処のしようもないので、Safariの対応を気長に待ちつつ、それまではこのまま我慢しておくことにします。
コメントを残す