uniapp中根据图片路径(网络或本地路径)转换为base64
javascript
/**
* 图片地址转换为base64格式图片
* @param {string} url 图片地址 可网络地址、本地相对路径
* @param {string} type base64图片类型 默认png
*/
function urlToBase64(url, type = 'png') {
let promises
// 网络地址 或者h5端本地相对路径 可使用request方式
promises = new Promise((resolve, reject) => {
uni.request({
url: url,
method: 'GET',
responseType: 'arraybuffer',
success: (res) => {
const base64 = `data:image/${type};base64,${uni.arrayBufferToBase64(res.data)}`
resolve(base64);
},
fail: (err) => {
reject(err);
},
})
})
// #ifdef APP
if (!url.startsWith('http')) {
// app真机本地相对路径
promises = new Promise((resolve, reject) => {
uni.compressImage({
src: url,
quality: 100, // 图片质量压缩0~100,100表示图片质量保持原样
success: (res) => {
const tempUrl = res.tempFilePath // 使用compressImage获取到安卓本地路径file:///...
plus.io.resolveLocalFileSystemURL(tempUrl, (entry) => {
entry.file((e) => {
let fileReader = new plus.io.FileReader();
fileReader.onload = (r) => {
resolve(r.target.result)
}
fileReader.readAsDataURL(e)
})
})
},
fail: (err) => {
reject(err);
},
})
})
}
// #endif
return promises
}