首页 > 编程语言 >JavaScript 计算base64编码图片大小

JavaScript 计算base64编码图片大小

时间:2023-01-10 17:45:53浏览次数:39  
标签:编码 JavaScript return base64 length 字符串 图片大小

JavaScript 可以通过获取图片的 base64 编码并计算其大小来计算图片大小。

方法一:

// 计算base64编码图片大小
function getBase64ImageSize(base64) {
	if (base64) {
		base64 = base64.split(",")[1].split("=")[0];
		var strLength = base64.length;
		var fileLength = strLength - (strLength / 8) * 2;
		return Math.floor(fileLength);
	} else {
		return null
	}
}

方法二:

// 计算base64编码图片大小
function getBase64ImageSize(base64) {
	const indexBase64 = base64.indexOf('base64,');
	if (indexBase64 < 0) return -1;
	const str = base64Str.substr(indexBase64 + 6);
	// 大小单位:字节
	return (str.length * 0.75).toFixed(2);
}

 方法三:

可以使用 atob() 函数将 base64 编码转换为二进制字符串,然后使用 length 属性获取字符串的长度。最后除以 8 得到字节数。

下面是一个示例函数,它接收一个 base64 图像字符串并返回其大小(以字节为单位):

function getBase64ImageSize(base64) {
    let str = atob(base64.split(',')[1]);
    let bytes = str.length;
    return bytes;
}

如果要获得KB的就除以1024

function getBase64ImageSizeInKB(base64) {
    let bytes = getBase64ImageSize(base64);
    let sizeInKB = bytes / 1024;
    return sizeInKB;
}

此函数首先使用 atob()base64 字符串转换为二进制字符串。 然后使用该字符串的 length 属性获取字符串的长度,即字节数。

在使用此函数之前,请确保浏览器支持 atob() 函数。 在旧版本的浏览器中,可能需要使用其他库来代替这个函数。

需要注意的是,base64 编码不仅增加了图像大小,而且还增加了约 33% 的额外大小。这是因为 base64 编码是一种用于将二进制数据转换为字符串形式的编码方法,其中每 6 个二进制位被编码为一个字符。这意味着,任何图像的大小都将增加至少 33%,这是一个需要考虑的因素。

另外, 如果需要更精确的大小,应该从原始图像中获取元数据,如图像的高度、宽度和每个像素的位深度等信息来计算其大小,而非使用base64大小。

 

标签:编码,JavaScript,return,base64,length,字符串,图片大小
From: https://www.cnblogs.com/yuzhihui/p/17040938.html

相关文章

  • JavaScript中的闭包
    JavaScript中的闭包是一种特殊的函数,它可以访问其定义时所在的作用域中的变量,即使在这个作用域已经不存在的情况下。闭包的一个常见用途是构建私有变量。当你使用闭包封装......
  • JavaScript 浅拷贝和深拷贝
    JavaScript中的拷贝分为两种:浅拷贝和深拷贝。浅拷贝是指在拷贝过程中,只拷贝一个对象中的指针,而不拷贝实际的数据。所以,浅拷贝中修改新对象中的数据时,原对象中的数据也会......
  • javascript中无限分类递归树
    摘抄:https://www.cnblogs.com/silfox/p/11411680.html(原文)列表转换成树形结构方法定义:1//javascript树形结构2functiontoTree(data){3//删除所有chi......
  • 14个非常棒的 JavaScript 游戏开发框架推荐
     ​​LimeJS​​​​​​这是一个基于HTML5游戏框架,用于快速构建运行于现代触摸屏和桌面浏览器的游戏(需要***访问)。 ​​Impact​​​​​​ 这是一个专业的JavaScript......
  • 浏览器访问 JSP 文件时无法进入 JavaScript 代码
    问题描述浏览器访问<head>中有JavaScript代码的JSP文件:<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>$Title......
  • JavaScript学习笔记—常量、标志符
    1.常量使用const声明常量,常量只能赋值一次,重复赋值会报错除了常规的常量外(如PI),有一些对象类型的数据也会生命为常量constPI=3.1415926;console.log(PI);//3.14......
  • 一次代码重构 JavaScript 图连通性判定
    简介说重构其实就是整理了代码,第一次自己手写写的很丑,然后看了书上写的,虽然和书上的思路不同但是整理后几乎一样漂亮效果整体代码如下classNode{AdjNodes=new......
  • JavaScript 性能优化
    JavaScript是一门动态类型、解释型的编程语言,在网页开发中扮演着非常重要的角色。随着网页的复杂度和访问量的增加,JavaScript性能的优化就显得越来越重要。下面是一些常......
  • JavaScript 防抖和节流
    JavaScript防抖和节流是两种常见的性能优化技术,用于减少函数的执行次数。防抖(debounce)是指在一段时间内,如果有多次触发事件,则只执行最后一次事件。节流(throttle)是指在一......
  • JavaScript项目榜单
    JavaScript项目榜单参考资料2022年最受欢迎的JavaScript项目榜单出炉BestofJS正式公布2022年JavaScript明星项目榜单该榜单提供了过去12个月JavaScript生态......