自己写
export const urlTobase64 = (url) => {
return new Promise((resolve, reject) => {
//#ifdef H5
uni.request({
url: url,
method: 'GET',
responseType: 'arraybuffer',
success: res => {
let base64 = wx.arrayBufferToBase64(res.data); //把arraybuffer转成base64
base64 = 'data:image/jpeg;base64,' + base64 //不加上这串字符,在页面无法显示的
console.log(base64)
resolve(base64)
},
fail: err => {
reject(err)
}
})
//#endif
//#ifdef APP-PLUS
uni.getFileSystemManager().readFile({
filePath: res.tempFilePaths[0],
encoding: 'base64',
success: r => { // r.data }
console.log(r.data)
resolve(r.data)
},
fail: err => {
reject(err)
}
})
//#endif
})
}
注意:这里只调试了app和h5,其他平台请自行扩展条件编译,app端需要打包后才生效
使用插件
https://ext.dcloud.net.cn/plugin?id=123
import { pathToBase64, base64ToPath } from '../../utils/gsq-image-tools/image-tools/index.js'
uni.chooseImage({
count: 1, //默认9
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album'], //从相册选择
success: async (res)=> {
console.log(res)
pathToBase64(res.tempFilePaths[0]).then(base64 => {
console.log(base64)
this.avater = base64
})
.catch(error => {
console.error(error)
})
},
fail: (e) => {
console.log(e)
}
});