如何在javascript中获取HTML5 Canvas.todataurl文件大小?

ven*_*668 14 javascript html5-canvas

var data_url = canvas.toDataURL("image/png");

var img = $("#img").attr("src",data_url);

什么是kb 的img文件大小?

Ped*_* L. 26

如果您想知道data-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) ;
Run Code Online (Sandbox Code Playgroud)

因为Base64编码有4/3的开销.

编辑:更正评论后的大小计算.

  • 如果Base64 = 4/3 * Original,则原始= 3/4 * Base64 (2认同)

Kar*_*eem 7

base64 估计总是会有所不同!

解码 base64 字符串并检查其长度。这个方法总是100%准确!

var content_without_mime = base64.split(",")[1];
var size_in_bytes = window.atob(content_without_mime).length;
Run Code Online (Sandbox Code Playgroud)


End*_*ess 5

我没有发现佩德罗的解决方案准确,我所做的是从画布中创建一个斑点,然后获取文件大小

canvas.toBlob(function(blob){
    alert(blob.size);
});
Run Code Online (Sandbox Code Playgroud)


Alb*_*ill 5

考虑它的最佳方式是每个字符代表 6 位(2^ 6 == 64,因此是 Base 64)。因此,将您拥有的字符数乘以 6 以获得总位数。然后将总位数除以 8 得到字节数,因为一个字节是 8 位。

Math.round(base64String.length * 6 / 8);

这与Math.round(base64String.length * 3 / 4);.