首页 > 建站教程 > JS、jQ、TS >  js获取base64图片的存储大小正文

js获取base64图片的存储大小

js获取base64图片的存储大小,不是获取宽高尺寸哦。

要获取获取base64图片的存储大小,就要知道Base64的编码原理:Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用'=',因此编码后输出的文本末尾可能会出现1或2个'='

明白了原理,就好反推出Base64图片的大小了:

通过base64编码原理我们知道,base64的图片字符流中的每8个字符就有两个是用0补充,而且字符流的末尾还可能存在‘='号,我们可以通过这个原理计算图片的文件流大小。
getImgSize(data) {  //data为base64图片
    var size = 0;
    if (data) { // 获取base64图片byte大小
        const equalIndex = data.indexOf('='); // 获取=号下标
        if (equalIndex > 0) {
            const str = data.substring(0, equalIndex); // 去除=号
            const strLength = str.length;
            const fileLength = strLength - (strLength / 8) * 2; // 真实的图片byte大小
            size = Math.floor(fileLength); // 向下取整
        } else {
            const strLength = data.length;
            const fileLength = strLength - (strLength / 8) * 2;
            size = Math.floor(fileLength); // 向下取整
        }
    } else {
        size = null;
    }
    return size;  //得到的是字节大小
}