Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 上载图像字节而不是base64表示_Javascript_Image_Canvas_Todataurl - Fatal编程技术网

Javascript 上载图像字节而不是base64表示

Javascript 上载图像字节而不是base64表示,javascript,image,canvas,todataurl,Javascript,Image,Canvas,Todataurl,给定javascript中的画布,保存到后端服务器的正常工作流如下所示: 创建画布元素 绘制/修改画布 调用canvas.toDataURL() 将画布的base64表示上载到后端服务器(基本ajax) 由于对toDataURL()的调用可能非常慢,我想知道是否可以直接将图像字节上传到后端服务器,而不是使用toDataURL()的base64方式 有什么想法吗?使用返回blob或二进制对象的,而不是toDataURL。您可以将结果直接发送到服务器。但调用是异步的 myCanvas.toBlob(

给定javascript中的画布,保存到后端服务器的正常工作流如下所示:

  • 创建画布元素
  • 绘制/修改画布
  • 调用canvas.toDataURL()
  • 将画布的base64表示上载到后端服务器(基本ajax)
  • 由于对toDataURL()的调用可能非常慢,我想知道是否可以直接将图像字节上传到后端服务器,而不是使用toDataURL()的base64方式

    有什么想法吗?

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

    myCanvas.toBlob(function(myBlob) {
      // send blob to server here!!
    }, "image/jpeg", 0.5);
    
    注意:旧版MS不支持该功能,但请参见顶部链接中的垫片。还有更好的填隙片,它们使用返回blob或二进制对象的填隙片,而不是toDataURL。您可以将结果直接发送到服务器。但调用是异步的

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

    注意:旧版MS不支持该功能,但请参见顶部链接中的垫片。还有更好的填隙片。

    在我看来,这是对你的问题的回答,“调用toDataURL()可能会非常慢”不是真的……你可以尝试将内容作为blob发送,以稍微提高速度,但如果你想显著提高速度,那么就创建一个质量较低的.jpg,而不是默认的.png:
    context.toDataURL('image/jpeg',3)
    以下是对您的问题的回答,我想,“调用toDataURL()可能会非常慢”不是真的……您可以尝试将内容作为blob发送,以稍微提高速度,但如果您想显著提高速度,则可以创建一个质量较低的.jpg,而不是默认的.png:
    context.toDataURL('image/jpeg',3)