首先要说一下将图片转码为base64的好处,就是在post请求中可以将图片转为base64的字符串给后端,后端就可以通过这个再将base64转为图片,这样可以提高接口的请求和响应速度。
那么uniapp如何将图片转码为base64呢?废话不多说直接上代码:
chooseImage() {
uni.chooseImage({
//不写sourceType默认相机相册两个都选
count: 1, //默认9
sizeType: "compressed",
success: (res) => {
let imgSrc = res.tempFilePaths[0];
this.src = imgSrc;
// 读取文件, base64 格式
const fs = uni.getFileSystemManager();
console.log(fs)
let base64Str = fs.readFileSync(imgSrc, 'base64');
let imgBase64 = `data:image/png;base64,${base64Str}`;
this.qureyGarbage(imgBase64);
}
});
},
uni.chooseImage()上传图片
通过uni.chooseImage()方法将图片上传上来,成功回调中拿到图片的路径
uni.getFileSystemManager()获取文件
在微信开发者文档中,wx.getFileSystemManager是文件管理器,通过输出看一看到里面有很多的方法:
readFileSync将文件读取为base64
在开发者文档中,readFileSync需指明要读取的文件路径,和编码格式:
我们可以将编码格式指定为base64,等到base64字符串。
最后根据base64的规范格式进行处理
let imgBase64 = `data:image/png;base64,${base64Str}`;