基于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 相关文章推荐
Z-Blog中用到的js代码
Mar 15 Javascript
收集的网上用的ajax之chat.js文件
Apr 08 Javascript
js中实现字符串和数组的相互转化详解
Jan 24 Javascript
PHP实现本地图片上传和验证功能
Feb 27 Javascript
jQuery的$.extend 浅拷贝与深拷贝
Mar 08 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
Aug 03 Javascript
最基础的vue.js双向绑定操作
Aug 23 Javascript
React Native中NavigatorIOS组件的简单使用详解
Jan 27 Javascript
使用Nuxt.js改造已有项目的方法
Aug 07 Javascript
Vue实现商品飞入购物车效果(电商项目)
Nov 26 Javascript
node实现mock-plugin中间件的方法
Dec 25 Javascript
js实现点击选项置顶动画效果
Aug 25 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获取目录所有文件并将结果保存到数组(实例)
2013/10/25 PHP
详解php魔术方法(Magic methods)的使用方法
2016/02/14 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
JS验证身份证有效性示例
2013/10/11 Javascript
浅谈Javascript数组索引
2015/07/29 Javascript
js实现多图左右切换功能
2016/08/04 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
JScript实现地址选择功能
2017/08/15 Javascript
初探js和简单隐藏效果的实例
2017/11/23 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
关于axios不能使用Vue.use()浅析
2018/01/12 Javascript
编写React组件项目实践分析
2018/03/04 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
React 组件渲染和更新的实现代码示例
2019/02/21 Javascript
微信小程序实现左侧滑栏过程解析
2019/08/26 Javascript
vue实现计步器功能
2019/11/01 Javascript
Python 列表排序方法reverse、sort、sorted详解
2016/01/22 Python
Django model update的多种用法介绍
2020/03/28 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
pygame库实现移动底座弹球小游戏
2020/04/14 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
2020/06/01 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2012/02/19 面试题
应届生财务会计求职信
2013/11/05 职场文书
行政文员岗位职责
2013/11/08 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
保护环境倡议书范文
2014/05/13 职场文书
岳庙导游词
2015/02/04 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
MySQL基础(一)
2021/04/05 MySQL
WebRTC记录音视频流(web技术分享)
2022/02/24 Javascript
oracle数据库去除重复数据
2022/05/20 Oracle