小程序
小游戏
企业微信
微信支付
扫描小程序码分享
后端接口返回二维码的base64格式图片,canvas绘制图片:ctx.drawImage(qrcodePath, xx, xx, xx, xx),开发者工具显示正常,但是真机上无法显示canvas绘制的二维码图片。手机是iphone 6sp
6 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
writeFile 了解一下
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
试了,write之后怎么去读,我用wx.downloadfile和getimageinfo去读取writefile的图片,提示invalid。求指导
write的时候,encoding要选 base64,然后就可以drawImage啦
this
.QRCodeSrc =
'data:image/png;base64,'
+ (res[2] && res[2].body ||
''
)
// 生成的base64二维码
fs.writeFile({
filePath: `${wx.env.USER_DATA_PATH}/resource/demo.png`,
data:
.QRCodeSrc,
encoding:
'base64'
,
success(res) {
console.log(
'writeFile:'
, res)
wx.getImageInfo({
src: `${wx.env.USER_DATA_PATH}/resource/demo.png`,
'getImageInfo:'
// this.ctx.drawImage('http://usr/resource/demo.png', 12, 384, 80, 80);
},
fail(err) {
console.error(err)
}
})
}, fail(err) {
wx.getImageInfo时报错: {errMsg: "getImageInfo:fail invalid"},你看我这代码哪里有问题吗
貌似我传的data是base64数据,但是我转二进制,也是报的相同的错误
setBase64Save(base64File) { const fsm = wx.getFileSystemManager(); let extName = base64File.match(/data\:\S+\/(\S+);/) if (extName) { extName = extName[1] } let fileName = Date.now() + '.' + extName return new Promise((resolve, reject) => { let filePath = wx.env.USER_DATA_PATH + '/' + fileName fsm.writeFile({ filePath, data: base64File.replace(/^data:\S+\/\S+;base64,/, ''), encoding: 'base64', success:(res)=>{ console.log('filePath',filePath); resolve(filePath); }, fail() { reject('写入失败'); }, }); }); }
canvas不支持base64格式图片
canvas支持二进制流的图片吗
https的图片可以先wx.downloadFile或者wx.getImageInfo下载下来,再去绘制图片,真机上正常显示,但是对于base64图片调用上面俩API会报错,图片路径不对。求问base64的图片,用canvas画时,真机上如何正确的显示
有解决这个问题的么?canvas只能支持buffer流图片吗?
问题如果我用canvas画图时速度非常快,假设1秒20张,先保存到本地再读取的方法就会非常慢,真机能直接用canvas读二进制图片显示吗?
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
writeFile 了解一下
试了,write之后怎么去读,我用wx.downloadfile和getimageinfo去读取writefile的图片,提示invalid。求指导
write的时候,encoding要选 base64,然后就可以drawImage啦
this
.QRCodeSrc =
'data:image/png;base64,'
+ (res[2] && res[2].body ||
''
)
// 生成的base64二维码
fs.writeFile({
filePath: `${wx.env.USER_DATA_PATH}/resource/demo.png`,
data:
this
.QRCodeSrc,
encoding:
'base64'
,
success(res) {
console.log(
'writeFile:'
, res)
wx.getImageInfo({
src: `${wx.env.USER_DATA_PATH}/resource/demo.png`,
success(res) {
console.log(
'getImageInfo:'
, res)
// this.ctx.drawImage('http://usr/resource/demo.png', 12, 384, 80, 80);
},
fail(err) {
console.error(err)
// this.ctx.drawImage('http://usr/resource/demo.png', 12, 384, 80, 80);
}
})
}, fail(err) {
console.error(err)
}
wx.getImageInfo时报错: {errMsg: "getImageInfo:fail invalid"},你看我这代码哪里有问题吗
貌似我传的data是base64数据,但是我转二进制,也是报的相同的错误
setBase64Save(base64File) { const fsm = wx.getFileSystemManager(); let extName = base64File.match(/data\:\S+\/(\S+);/) if (extName) { extName = extName[1] } let fileName = Date.now() + '.' + extName return new Promise((resolve, reject) => { let filePath = wx.env.USER_DATA_PATH + '/' + fileName fsm.writeFile({ filePath, data: base64File.replace(/^data:\S+\/\S+;base64,/, ''), encoding: 'base64', success:(res)=>{ console.log('filePath',filePath); resolve(filePath); }, fail() { reject('写入失败'); }, }); }); }
canvas不支持base64格式图片
canvas支持二进制流的图片吗
https的图片可以先wx.downloadFile或者wx.getImageInfo下载下来,再去绘制图片,真机上正常显示,但是对于base64图片调用上面俩API会报错,图片路径不对。求问base64的图片,用canvas画时,真机上如何正确的显示
有解决这个问题的么?canvas只能支持buffer流图片吗?
问题如果我用canvas画图时速度非常快,假设1秒20张,先保存到本地再读取的方法就会非常慢,真机能直接用canvas读二进制图片显示吗?