如何在javascript中获取HTML5 Canvas.todataurl文件大小
How to get HTML5 Canvas.todataurl file size in javascript?
var data_url=canvas.toDataURL("image/png");
var img=$("#img").attr("src",data_url);
以 KB 为单位的 IMG 文件大小是多少?
如果你想知道数据URL的大小(以字节为单位(,你可以这样做:
var imgFileSize = data_url.length;
但这不是 png 大小的实际大小。您可以通过这种方式非常准确地近似于实际的 PNG 大小:
var head = 'data:image/png;base64,';
var imgFileSize = Math.round((data_url.length - head.length)*3/4) ;
因为 Base64 编码的开销为 4/3。
编辑:更正了注释后的大小计算。
base64 估计值总是会有所不同!解码 base64 字符串并检查其长度。此方法始终是100%准确的!
去除 MIME 类型(通过 split
(并解码字符串(通过 atob
(后,生成的字符串长度应与最终文件大小相同。
let size_in_bytes = window.atob(base64.split(",")[1]).length;
最好的考虑方式是每个字符代表 6 位(2^6 == 64,因此以64 为基数(。因此,将您拥有的字符数量乘以 6 得到总位数。然后将总位数除以 8 得到字节数,因为一个字节是 8 位。
Math.round(base64String.length * 6 / 8);
这与Math.round(base64String.length * 3 / 4);
相同。
我没有
发现佩德罗的解决方案准确,我所做的是从画布上创建一个 blob,然后获取文件大小
canvas.toBlob(function(blob){
alert(blob.size);
});
相关文章:
- IE9的HTML5 Canvas getImageData()函数存在问题
- 查找带有边框的HTML5 Canvas(点击)事件的坐标
- 在keydown(JS,Jquery)上更改HTML5 Canvas元素
- HTML5 Canvas访问控制允许原始错误
- HTML5 Canvas toDataURL(“image/png”)适用于一些绘画,而有些则不然,不确定原因
- 如何在MVC5中运行时在HTML5 Canvas中显示图像
- HTML5 Canvas无法加载Kinetic.js
- 构建HTML5 Canvas/JS游戏
- HTML5 Canvas+js游戏|死亡时重置游戏更改游戏速度
- HTML5 Canvas undo是'在IE或Firefox中无法正常工作
- 在Javascript HTML5+Canvas中处理精灵鼠标点击的最佳方式
- html5 canvas toDataURL 返回空白图像
- HTML5 Canvas 的初学者,使用图层
- HTML5 Canvas drawImage ratio bug iOS
- html5 Canvas getImageData 或 toDataURL 的结果 - 占用更多内存
- HTML5 Canvas - 磨砺到停顿
- HTML5 Canvas - 使用命令数组通过上下文进行绘制
- 尝试绘制从鼠标位置工具栏中选择的形状 - HTML5 CANVAS
- Html5 Canvas Javascript使我的网页链接没有响应
- Drawing asymmetrical ellipses in HTML5 Canvas using js?