1、在utils文件下新建一个auth.js文件(随便取一个名字,你开心就行),在里面添加以下代码
/**
* 图片转base64
* @returns {Promise<any>} 返回一个 promise 对象,resolve 结果或 reject 错误
*/
function downloadAndConvert(filePath) {
return new Promise((resolve, reject) => {
if (filePath.indexOf('wxfile') ===0 || filePath.indexOf('http://tmp/') ===0) {
wx.getFileSystemManager().readFile({
filePath: filePath,
encoding: 'base64',
success: res => {
wx.getImageInfo({
src: filePath,
success: (infoRes) => {
resolve(`data:image/${infoRes.type};base64,${res.data}`)
},
fail: (err) => {
reject('Error getting image info')
}
})
},
fail: err => {
reject('Error reading file')
}
})
} else {
wx.downloadFile({
url: filePath,
success: res => {
wx.getFileSystemManager().readFile({
filePath: res.tempFilePath,
encoding: 'base64',
success: res => {
wx.getImageInfo({
src: filePath,
success: (infoRes) => {
resolve(`data:image/${infoRes.type};base64,${res.data}`)
},
fail: (err) => {
reject('Error getting image info')
}
})
},
fail: err => {
console.log('网络',err)
}
})
},
fail: err => {
console.log('下载网络失败',err)
}
})
}
})
}
module.exports={
downloadAndConvert
}
如果是网络图片需要先使用wx.downloadFile({...})下载之后才可进行转换,本地的则直接转换即可你可根据具体需求修改代码,不要受此处代码影响。
2、在你需要使用的地方引入
const auth = require('../../utils/auth');
Page({
data: {
},
onLoad() {
let base64 = auth.downloadAndConvert('../../images/logo.png')
console.log(base64 )
}
})