微信生成二维码,是后台像微信接口请求,拿到buffer以后,转成base64,然后我们在前端进行展示。
在小程序版本库2.7.0以后,微信的image标签,提供了show-menu-by-longpress属性,直接在image标签上设置show-menu-by-longpress="1"即可实现长按保存,发送给朋友,识别图中小程序等功能。
但是!!!!!
在测试中我发现,在安卓机型上是没问题的,在ios上保存图片和分享给朋友都失效了。经过一系列的踩坑,终于绕过了这个坑。
具体思路就是:把后台传回来的base64生成一个临时文件,给image的src设置为这个临时文件,而不是直接把base64放上去。
代码如下:
const fs = wx.getFileSystemManager();
//随机定义路径名称
let times = new Date().getTime();
let codeimg = wx.env.USER_DATA_PATH + '/' + times + '.png';
//将base64图片写入
let that=this;
fs.writeFile({
filePath: codeimg,
data: that.src.slice(22),
encoding: 'base64',
success: (res) => {
//写入成功了的话,新的图片路径就能用了
console.log(res)
console.log(codeimg)
that.src2=codeimg;
}
});
这样的话 ,在ios上就可以保存了,亲测可用