基于JavaScript获取base64图片大小


Posted in Javascript onOctober 18, 2019

base64原理

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

如何获取base64图片大小

通过base64编码原理我们知道,base64的图片字符流中的每8个字符就有两个是用0补充,而且字符流的末尾还可能存在‘='号,我们可以通过这个原理计算图片的文件流大小。

getImgByteSize(data) {
  if (data.graphicContents) { // 获取base64图片byte大小
   const equalIndex = data.graphicContents.indexOf('='); // 获取=号下标
   if (equalIndex > 0) {
    const str = data.graphicContents.substring(0, equalIndex); // 去除=号
    const strLength = str.length;
    const fileLength = strLength - (strLength / 8) * 2; // 真实的图片byte大小
    data.size = Math.floor(fileLength); // 向下取整
   } else {
    const strLength = data.graphicContents.length;
    const fileLength = strLength - (strLength / 8) * 2;
    data.size = Math.floor(fileLength); // 向下取整
   }
  } else {
   data.size = null;
  }
 }

data.graphicContents是后端获取的base64图片的字符串。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 创建对象和构造类实现代码
Jul 30 Javascript
js 禁用只读文本框获得焦点时的退格键
Apr 25 Javascript
THREE.JS入门教程(1)THREE.JS使用前了解
Jan 24 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
Apr 29 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
Jun 23 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
Sep 05 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
Jan 22 Javascript
JavaScript+CSS相册特效实例代码
Sep 07 Javascript
React如何将组件渲染到指定DOM节点详解
Sep 08 Javascript
分析javascript中9 个常见错误阻碍你进步
Sep 18 Javascript
vue实现双向绑定和依赖收集遇到的坑
Nov 29 Javascript
微信小程序实现弹框效果
May 26 Javascript
react MPA 多页配置详解
Oct 18 #Javascript
vue滚动插件better-scroll使用详解
Oct 18 #Javascript
VUE实现密码验证与提示功能
Oct 18 #Javascript
VUE实现图片验证码功能
Nov 18 #Javascript
countUp.js实现数字滚动效果
Oct 18 #Javascript
Vue-cli3项目引入Typescript的实现方法
Oct 18 #Javascript
细述Javascript的加法运算符的具体使用
Oct 18 #Javascript
You might like
php 日期时间处理函数小结
2009/12/18 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
用javascript将数据导入Excel示例代码
2014/09/10 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
JS中多种方式创建对象详解
2016/03/22 Javascript
Node.js中.pfx后缀文件的处理方法
2017/03/10 Javascript
JS实现多物体运动的方法详解
2018/01/23 Javascript
vue通过路由实现页面刷新的方法
2018/01/25 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
浅谈ECMAScript 中的Array类型
2019/06/10 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
javascript实现文字跑马灯效果
2020/06/18 Javascript
[06:16]DOTA2守卫传承者——职业选手谈心路历程
2015/02/26 DOTA
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
使用Python pip怎么升级pip
2020/08/11 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
2020/09/30 Python
Python如何急速下载第三方库详解
2020/11/02 Python
美国休闲服装品牌:Express
2016/09/24 全球购物
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
设计毕业生简历中的自我评价
2013/10/01 职场文书
学生打架检讨书1000字
2014/01/16 职场文书
出纳工作岗位责任制
2014/02/02 职场文书
小学新教师培训方案
2014/02/03 职场文书
工会主席岗位责任制
2014/02/11 职场文书
外语系大学生自荐信范文
2014/03/01 职场文书
房屋转让协议书
2014/04/11 职场文书
演讲稿的写法
2014/05/19 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
毕业论文指导教师评语
2014/12/30 职场文书
英文商务邀请函范文
2015/01/31 职场文书
2016年度基层党建工作公开承诺书
2016/03/25 职场文书