我正在获取有关图像的Base 64字符串,获取数据后,我将字符串替换为base 64,我的代码就是这个
const buf = Buffer.from(base64String.replace(/^data:image\/\w+;base64,/, ''),
'base64');
const imagedata = {
Key: `${customname}.${imageextension}`,
Body: buf,
ContentEncoding: 'base64',
ContentType: 'image/jpeg',
};
此后,我将图像上传到AWS S3,我注意到,当我上传图像时,其实际大小为400 kb,但是在AWS S3上上传后,相同的图像大小约为2MB。
我知道base 64将增加30%到40%的大小,但就我而言,它太重了, 有人建议我如何解决这个问题,
我在使用Nodejs,非常感谢您的帮助。
问题已更新 图像扩展完全取决于用户。
问题已更新。 我创建了一个函数,该函数以kb为单位返回基数64的大小。
const calculateImageSize = (base64String) =>{
let padding, inBytes, base64StringLength;
if (base64String.endsWith("==")) padding = 2;
else if (base64String.endsWith("=")) padding = 1;
else padding = 0;
base64StringLength = base64String.length;
console.log(base64StringLength)
inBytes = (base64StringLength / 4) * 3 - padding;
console.log(inBytes);
this.kbytes = inBytes / 1000;
console.log(inBytes / 1000 + "KB");
return this.kbytes;
}
之后,我上传了图像(1.43kb),在Nodejs上将字符串传递给函数以获取kb大小。
calculateImageSize(req.body.image)return 41.3 kb
意味着我必须在上载时压缩大小。 任何帮助再次表示感谢 cr