基于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 相关文章推荐
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
Jun 11 Javascript
jquery实现input输入框实时输入触发事件代码
Jan 28 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
Sep 02 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
May 19 Javascript
jquery中each循环的简单回滚操作
May 05 jQuery
javascript实现Emrips反质数枚举的示例代码
Dec 06 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
Apr 28 Javascript
vue自定v-model实现表单数据双向绑定问题
Sep 03 Javascript
vue eslint简要配置教程详解
Jul 26 Javascript
解决Vue中使用keepAlive不缓存问题
Aug 04 Javascript
详解JavaScript中new操作符的解析和实现
Sep 04 Javascript
基于JavaScript实现简单抽奖功能代码实例
Oct 20 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
smarty 原来也不过如此~~呵呵
2006/11/25 PHP
使用JSON实现数据的跨域传输的php代码
2011/12/20 PHP
PHP通过session id 实现session共享和登录验证的代码
2012/06/03 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
PHP自动重命名文件实现方法
2014/11/04 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
2021/02/26 PHP
JavaScript的public、private和privileged模式
2009/12/28 Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
2010/05/04 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
详解node中创建服务进程
2017/05/09 Javascript
nodeJS实现路由功能实例代码
2017/06/08 NodeJs
Bootstrap Table从零开始
2017/06/30 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
利用vue组件自定义v-model实现一个Tab组件方法示例
2017/12/06 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
vue+canvas实现拼图小游戏
2020/09/18 Javascript
[01:09:19]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第二场 2月28日
2021/03/11 DOTA
python处理html转义字符的方法详解
2016/07/01 Python
Python删除n行后的其他行方法
2019/01/28 Python
Python docx库用法示例分析
2019/02/16 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
python面试题之列表声明实例分析
2019/07/08 Python
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
Lovedrobe官网:英国领先的大码服装品牌
2019/09/19 全球购物
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
毕业生求职简历中的自我评价
2013/10/18 职场文书
毕业实习个人鉴定范文
2013/12/10 职场文书
省文明单位申报材料
2014/05/08 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
2014年小班保育员工作总结
2014/12/23 职场文书
创业方案:赚钱的烧烤店该怎样做?
2019/07/05 职场文书