このコードを見ると、webp は png と jpg よりもはるかに優れています。
<canvas id="canvas"></canvas>
<script>
var ctx = canvas.getContext("2d");
ctx.fillStyle = "red";
ctx.fillRect(0, 0, 8, 8);
var webp = canvas.toDataURL("image/webp"); // Chrome only?
var png = canvas.toDataURL("image/png");
var jpg = canvas.toDataURL("image/jpeg");
console.log(webp.length, webp); // 263 byte
console.log(png.length, png); // 1918 byte
console.log(jpg.length, jpg); // 1938 byte
document.body.appendChild(new Image).src = webp;
document.body.appendChild(new Image).src = png;
document.body.appendChild(new Image).src = jpg;
</script>
ノードモジュールhttps://github.com/Automattic/node-canvasを使用しています
これはwebpをサポートしていませんが、キャンバス要素をシミュレートします
私が必要だと思うのは、このキャンバスのラッパーです
wrapper(canvas).toDataURL('image/webp');
多くの試みでわかったように、base64 png 画像を png から webp に変換するのは速度が悪いだけです。
webp は、websocket を介してすばやく転送するのに理想的なサイズです。webp がサポートされていない場合は、png にフォールバックすると、ユーザーのエクスペリエンスが遅くなります。
元の質問:
node.js では、文字列を base64 png から base64 webp に変換する方法が必要です。
アプリケーションの性質上、文字列と言います。これらの特定の画像を保存してから変換した場合 (画像の「ファイル」を変換する npm モジュールがいくつかあります)、これらの画像は一時的で、ユーザーごとにオンザフライであると想定されるため、サーバーは画像でいっぱいになります。ユーザーは、ページを移動するたびに約 100 の新しい画像を取得します。
ノード キャンバスcanvas.toDataURL('image/webp')
では、image/png のみがサポートされていません