canvasから画像スキームデータを抽出する際のtoDataURL()メソッドですが、
そのままだとpng画像になります。
toDataURL()はpngの対応が必須実装なので、canvasが使えるブラウザは必ずpng出力が出来ます。
ですが、jpeg対応しているブラウザも多く、特に大きなアイコン画像などを扱うiconDecotterでは
実際のところjpegの方がだいたいは軽いので、今まではpngしか扱っていなかったのをjpeg対応するようにしました。
//png画像 var png_data = canvas.toDataURL('image/png'); //jpeg画像 var jpeg_data = canvas.toDataURL('image/jpeg'); //比較 if( png_data.length > jpeg_data.length ){ console.log('jpegの方が軽い'); }else{ console.log('pngの方が軽い'); }
加工後画像のデータを取得する時に、pngとjpegで比較して容量の少ない方を選ぶようにしました。
ものにもよりますが、データ容量がかなり削減されるケースが多いようで、トラフィックの軽減にもかなり役立っているような気がします。
ちょっと前からアイコン画像の扱うサイズ自体も512pxまで拡張したため、元アイコンが大きなユーザーが増えており、そうなると無圧縮pngを通信していると非常に遅い、という問題がありました。
色々と試しましたが、jpegでデータを取れないブラウザはもうあまり無いみたいなので、jpeg対応するようにしました。
コメント