nodejs获取的微信小程序二进制图片无法展示
2023-12-15 15:05:43
我们使用微信官方提供的接口getwxacode
获取了微信小程序二维码,但是,获取的二进制图片无论如何都没法展示出来。
调用微信官方接口的方法为:使用Nodejs包request,调用方法为;
// 获取小程序二维码
async queryQRCode(access_token: string) {
try {
return new Promise(async (resolve, reject) => {
const params = {
path: 'pages/card/index',
}
const url = `https://api.weixin.qq.com/wxa/getwxacode?access_token=${access_token}`
request({
url: `https://api.weixin.qq.com/wxa/getwxacode?access_token=${access_token}`,
method: 'post',
body: JSON.stringify(params),
// encoding: null,
}, async function(error, response, body) {
let data = body
var base64Img = "data:image/png;base64," + data.toString('base64'); // base64图片编码字符串
resolve(base64Img)
})
})
} catch(e) {
console.log(e)
}
}
刚开始,我们转base64的方式进行展示,图片展示不了。使用的如下方式:
let data = body
let base64Img = "data:image/png;base64," + data.toString('base64'); // base64图片编码字符串
后面,我们又将二进制保存成为图片,同样是展示不了。使用的方式如下:
fs.writeFile('test_wx.png', data, function(err) {
console.log('err', err)
}) // 保存成图片
发现还是展示不了。
最后,发现是因为request会自动对返回的结果进行encoding。所以,我们只需要在request时,添加encoding: null
即可。最终的实现方式如下:
// 获取小程序二维码
async queryQRCode(access_token: string) {
try {
return new Promise(async (resolve, reject) => {
const params = {
path: 'pages/card/index',
}
const url = `https://api.weixin.qq.com/wxa/getwxacode?access_token=${access_token}`
request({
url: `https://api.weixin.qq.com/wxa/getwxacode?access_token=${access_token}`,
method: 'post',
body: JSON.stringify(params),
// encoding: null,
}, async function(error, response, body) {
let data = body
var base64Img = "data:image/png;base64," + data.toString('base64'); // base64图片编码字符串
resolve(base64Img)
})
})
} catch(e) {
console.log(e)
}
}
完美解决。
文章来源:https://blog.csdn.net/qq_29517595/article/details/135012987
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!