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

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

比如下面的base64图片字符串

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

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

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,
  };
}

使用方式如下

getBase64ImgSize(base64DataStr)

运行后得到的结果

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