为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUX布斯 2019-12-27 09:33:17
有什么方法可以将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>然后,我已经设置了输入文件以正确设置画布,这可以正常工作:$('#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编码),以便将数据推送到服务器...最终结果是,我需要为用户提供选择文件,裁剪/调整大小,然后单击按钮的功能,此时已编辑的图像将被上传到服务器(我无法在服务器端进行操作)由于服务器端的限制,无法进行裁剪/调整大小...)任何帮助将是巨大的!干杯
查看完整描述

2 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

的canvas元件提供一个toDataURL返回的方法data:,其包括在给定的格式的base64编码的图像数据的URL。例如:


var jpegUrl = canvas.toDataURL("image/jpeg");

var pngUrl = canvas.toDataURL(); // PNG is the default

尽管返回值不仅是base64编码的二进制数据,但是修剪方案和文件类型以仅获取所需数据是一件简单的事情。


toDataURL如果浏览器认为您已将从其他来源加载的任何数据绘制到画布上,则该方法将失败,因此,仅当您的图像文件与脚本执行此操作的HTML页面从同一服务器加载时,此方法才有效操作。


有关更多信息,请参见API 上的MDN文档canvas,其中包括的详细信息toDataURL,以及有关data:URI方案的Wikipedia文章,其中包括有关从此调用中收到的URI格式的详细信息。


查看完整回答
反对 回复 2019-12-27
  • 2 回答
  • 0 关注
  • 764 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信