【问题标题】:Uploading image bytes instead of base64 representation上传图像字节而不是 base64 表示
【发布时间】:2016-11-22 20:48:19
【问题描述】:

给定一个 javascript 画布,保存到后端服务器的正常工作流程如下:

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

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

有什么想法吗?

【问题讨论】:

  • 这里是您问题的答案stackoverflow.com/a/31736411/1267530
  • IMO,“调用 toDataURL() 可能很慢” 不是真的...
  • 您可以尝试将内容作为 blob 发送以稍微提高速度,但如果您想要显着提高速度,请创建质量降低的 .jpg 而不是默认的 .png:context.toDataURL('image/jpeg',3)

标签: javascript image canvas todataurl


【解决方案1】:

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

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

注意:较旧的 MS 不支持它,但请参阅顶部的链接以获取 shim。还有更好的垫片。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 2023-03-27
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    相关资源
    最近更新 更多