JavaScript 计算base64 编码图片大小

您所在的位置:网站首页 fgo虞姬职介 JavaScript 计算base64 编码图片大小

JavaScript 计算base64 编码图片大小

2024-05-09 01:53| 来源: 网络整理| 查看: 265

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

方法二:根据字符所占字节数计算(二)

// 计算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函数

可以使用 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大小。

方法四:先将base64 图像转换为Blob,再获取Blob 的大小

// 将base64 转换为Blob function base64ToBlob(base64) { var arr = base64.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); } return new Blob([u8arr], { type: mime }); } let blob = base64ToBlob(base64); console.log(blob.size);

 方法五:先将base64 图像转换为File,再获取File 的大小

 

function base64ToFile(base64, fileName) { let arr = base64.split(','); let mime = arr[0].match(/:(.*?);/)[1]; let bstr = atob(arr[1]); let n = bstr.length; let u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); } return new File([u8arr], fileName, { type: mime }); } let file = base64ToFile(base64, 'test.jpeg'); console.log(file.size);

...



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3