这段时间在做微信小程序ocr发票识别的功能,用到了uniapp里面的carema拍照的组件,在图片上传的时候遇到了一些坑。
下面我来说一说:
1. carema组件拍照之后会返回一个http的图片地址
图片地址是这样的,只有一个http协议,没有域名,没有端口号,很显然,这个是只有本地才能识别的一个图片地址,当把这个地址放到浏览器上,你就会发现是这样的
直接无法访问
2. 如何将carema组件生成的图片让浏览器能够识别呢?
这个我们就需要把图片转换为base64格式
方法如下:
transformBase(res) {
//res是carema组件返回的图片地址
let that = this;
var FSM = wx.getFileSystemManager();
FSM.readFile({
filePath: res,
encoding: "base64",
success: function(data) {
let Working = data.data;
that.getBase64ImageUrl(Working)
}
});
},
getBase64ImageUrl: function(res) {
var base64Data = res;
base64Data = wx.arrayBufferToBase64(wx.base64ToArrayBuffer(base64Data));
let base64Url = "data:image/png;base64," + base64Data;
}
最后的base64Url就是我们需要的base64图片编码,这样,我们就转化成功了。