收到后端返回的二进制流图片,转成图片
案例使用taro小程序,获取二维码
1.接口请求添加响应的数据类型,responseType: 'arraybuffer'
,获取到的数据为ArrayBuffer类型
2.将获取的数据转为base64字符串
3. base64添加前缀
4. base64字符串转为图片
【如果只是在图片标签的src=""
属性使用,则给src直接赋值base64字符串就可以,不需要执行第4步】
具体代码
const getWxcodeSrc = () => {
Taro.request({
url: 'xxx', //接口
data: {
// 参数
},
responseType: 'arraybuffer', // 1.响应的数据类型,必需有
// 其它
success: (res) => {
const base64 = Taro.arrayBufferToBase64(res) // 2.将获取的数据转为base64字符串
let src = 'data:image/png;base64,' + base64 // 3.为base64添加前缀,准备转为png类型
// 4.base64字符串转为图片
base64src(src, (resp) => {
src = resp
})
return src
},
})
}
// base64转图片
const base64src = (base64data, fun) => {
const time = new Date().getTime()
const imgPath = Taro.env.USER_DATA_PATH + '/poster' + time + 'share' + '.png'
const imageData = base64data.replace(/^data:image\/\w+;base64,/, '')
const file = Taro.getFileSystemManager()
file.writeFileSync(imgPath, imageData, 'base64')
fun(imgPath)
}