1、选择或者拍照的图片转base64:
wx.getFileSystemManager().readFile({
filePath: res.tempFilePath, //选择图片返回的相对路径
encoding: 'base64', //编码格式
success: resultBase => { //成功的回调
that.setData({
resultBase64ImageB: resultBase.data
});
}
})
2、https图片转成base64数据:
wx.downloadFile({
url: result.image,//https图片地址
success(res) {
wx.getFileSystemManager().readFile({
filePath: res.tempFilePath, //选择图片返回的相对路径
encoding: 'base64', //编码格式
success: resultBase => { //成功的回调
that.setData({
resultBase64ImageB: resultBase.data
});
}
})
}
})
3、小程序代码里的图片资源,暂时不支持转base64,也可能是我没有找到方法,如果大家有知道方法的,望不吝赐教!
4、Base64数据转成图片展示:
(实现逻辑:把base64数据写到本地文件,然后加载本地图片来展示 。 参考:https://cloud.tencent.com/developer/article/1360871)
if (result != null) {//result为base64的图片数据(注意:没有前缀 data:image/png;base64,)
var array = wx.base64ToArrayBuffer(result)
const fsm = wx.getFileSystemManager();
const FILE_BASE_NAME = 'motian_base64src';
const filePath = wx.env.USER_DATA_PATH+'/'+FILE_BASE_NAME+'.jpg';
fsm.writeFile({
filePath,
data: array,
encoding: 'binary',
success() {
that.setData({
errormsg: '',
resultImage: filePath //结果图片
})
},
fail() {
},
});
5、报错: vdSyncBatch 数据传输长度为 1245641 已经超过最大长度 1048576
setData()微信设置的一次最大传输长度为1M;
找到问题就好解决了,不论是把base64截断多次setData到data里,还是用app的全局变量都可以!