上传图像字节而不是 base64 表示

Uploading image bytes instead of base64 representation

给定 javascript 中的 canvas,保存到后端服务器的正常工作流程如下:

  1. 创建canvas元素
  2. 绘制/修改canvas
  3. 调用canvas.toDataURL()
  4. 将 canvas 的 base64 表示上传到您的后端服务器(基本 ajax)。

由于调用 toDataURL() 可能非常慢,我想知道是否可以直接将图像字节上传到后端服务器,而不是使用 toDataURL() 的 base64 方式。

有什么想法吗?

使用 toBlob 其中 returns blob 或二进制对象,而不是 toDataURL。您可以将结果直接发送到服务器。虽然调用是异步的

myCanvas.toBlob(function(myBlob) {
  // send blob to server here!!
}, "image/jpeg", 0.5);

注意:较旧的 MS 不支持它,但请参阅顶部的 link 以获得垫片。那里有更好的垫片。