base64图片的大小计算及获取原图字节大小

实现原理:根据base64,做区分,前面部分是类型,后面部分是真实的的图片字符串

比如下面的base64图片字符串

// 这里只是做了一个例子

var base64DataStr = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABNoAAAigCAY ... pw52VLv8/zk3Uc3CN6sgAAAAASUVORK5CYII=';

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function getBase64ImgSize(base64DataStr) {
var tag = "base64,";
var base64Data = '';

// 截取字符串 获取"base64,"后面的字符串
base64DataStr = base64Data = base64DataStr.substring(base64DataStr.indexOf(tag) + tag.length);

// 根据末尾等号('=')来再次确认真实base64图片字符串
var eqTagIndex = base64DataStr.indexOf("=");
base64DataStr = eqTagIndex != -1 ? base64DataStr.substring(0, eqTagIndex) : base64DataStr;

// 计算大小
var strLen = base64DataStr.length;
var fileSize = strLen - (strLen / 8) * 2; // 这里的原理可以想一下为什么要这样做
return {
fileSize: fileSize,
base64Data: base64Data,
};
}

使用方式如下

1
getBase64ImgSize(base64DataStr)

运行后得到的结果

1
{fileSize: 57, base64Data: "iVBORw0KGgoAAAANSUhEUgAABNoAAAigCAY ... pw52VLv8/zk3Uc3CN6sgAAAAASUVORK5CYII="}