从HTML5 Canvas获取二进制(base64)数据(readAsBinaryString)

有什么方法可以将HTML Canvas的内容作为二进制数据读取吗?

目前我已经得到了下面的HTML来显示一个input文件和它下面的canvas:

<p><button id="myButton" type="button">Get Image Content</button></p> <p>Input:<input id="fileInput" type="file"/></p> <p>Canvas<canvas id="myCanvas" width="578" height="200"/></p> 

然后我设置我的input文件正确设置canvas,它工作正常:

 $('#fileInput').on('change', function() { $.each(this.files, function() { var image = new Image(); image.src = window.URL.createObjectURL(this); image.onload = function() { $("canvas").drawImage({ source: image, x: 50, y: 50, width: 100, fromCenter: false }); }; }); }); 

我现在需要从Canvas获取二进制数据(Base64编码),当button被点击时,它会将数据推送到服务器…

最终的结果是,我需要为用户提供select文件,裁剪/resize的function,然后单击一个button,编辑后的图像将被上传到服务器(我不能做服务器端由于服务器端的限制裁剪/resize…)

任何帮助将是伟大的! 干杯

canvas元素提供了一个toDataURL方法,该方法返回包含给定格式的base64编码图像数据的data: URL。 例如:

 var jpegUrl = canvas.toDataURL("image/jpeg"); var pngUrl = canvas.toDataURL(); // PNG is the default 

尽pipe返回值不仅仅是 base64编码的二进制数据,修剪scheme和文件types以获得所需数据是一件简单的事情。

如果浏览器认为您已经从canvas上绘制了从不同来源加载的数据,那么toDataURL方法将会失败,所以这种方法只有在您的图像文件从脚本执行的HTML页面这个操作。

有关更多信息,请参阅canvas API中的MDN文档 ,其中包括toDataURL详细信息,以及关于data: URIscheme的维基百科文章 ,其中包含有关您将从此调用中获得的URI格式的详细信息。

看你如何绘制你的canvas

$("canvas").drawImage();

看来你使用Caleb Evans的jQuery Canvas( jCanvas )。 我实际上使用该插件,它有一个简单的方法来检索canvasbase64图像string$('canvas').getCanvasImage();

这里有一个为你工作的小提琴: http : //jsfiddle.net/e6nqzxpn/