Jam*_*010 75 javascript html5 fileapi html5-canvas
有没有办法将HTML Canvas的内容作为二进制数据读取?
目前我有以下HTML来显示输入文件和它下面的画布:
<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>
Run Code Online (Sandbox Code Playgroud)
我然后设置我的输入文件以正确设置画布,这工作正常:
$('#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
});
};
});
});
Run Code Online (Sandbox Code Playgroud)
我现在需要在单击按钮时从Canvas获取二进制数据(Base64编码),因此它会将数据推送到服务器...
最终的结果是我需要为用户提供选择文件的能力,裁剪/调整大小,然后单击一个按钮,此时编辑的图像将上传到服务器(我不能做服务器端)由于服务器端限制而裁剪/调整大小...)
任何帮助都会很棒!干杯
Mar*_*ins 134
该canvas
元素提供了一种toDataURL
方法,该方法返回data:
包含给定格式的base64编码图像数据的URL.例如:
var jpegUrl = canvas.toDataURL("image/jpeg");
var pngUrl = canvas.toDataURL(); // PNG is the default
Run Code Online (Sandbox Code Playgroud)
虽然返回值不仅仅是 base64编码的二进制数据,但是修剪方案和文件类型以获得所需的数据是一件简单的事情.
toDataURL
如果浏览器认为您已经从画布中抽取了从不同来源加载的任何数据,则该方法将失败,因此只有当您的图像文件从与其脚本执行此操作的HTML页面相同的服务器加载时,此方法才有效.操作.
有关更多信息,请参阅API 上的MDN文档canvas
,其中包含有关URI方案的详细信息toDataURL
和Wikipedia文章data:
,其中包含有关您将通过此调用接收的URI格式的详细信息.
Mas*_*iri 10
简短的回答:
const base64Canvas = canvas.toDataURL("image/jpeg").split(';base64,')[1];
Run Code Online (Sandbox Code Playgroud)