开始
最近项目中遇到个问题,就是生成海报的时候,需要画上小程序的二维码,然后后台返回的二维码图片是base64的格式,真机生成海报后二维码没有显示。
所以就把后台返回的base64格式的二维码图片转为本地图片,主要的API有wx.getFileSystemManager和wx.getFileSystemManager().writeFileSync。
wx.getFileSystemManager
小程序通过wx.getFileSystemManager()可以获得全局唯一的文件管理器,所有的文件管理都通过FileSystemManager来进行管理
const FileSystemManager = wx.getFileSystemManager();
一般我们都是将文件添加到手机,即称为本地文件,文件的格式为:
{{协议名}}: //文件路径
其中,在安卓和ios客户端中协议名是’wxfile’,在开发者工具上是“http”,开发者无须去关心这个协议的差异。
将base64图片转为本地用户文件
具体操作如下:
let code = res.data.code; // 后台返回的base64图片,没有带data:image/png;base64,的前缀。 let src = `data:image/png;base64,${code}`; const fsm = wx.getFileSystemManager(); // 获取文件管理器 code = code .replace(/ +/g, ""); //去掉空格方法 code = code .replace(/[rn]/g, ""); const buffer = wx.base64ToArrayBuffer(code ); // 将 base64 字符串转成 ArrayBuffer 对象 const fileName = wx.env.USER_DATA_PATH + '/share_img.png'; // 文件系统中的用户目录路径 (本地路径) /** * @param fileName: 文件路径 * @param buffer : 要写入的文本或二进制数据 * @param binary: 指定写入文件的字符编码 */ fsm.writeFileSync(fileName, buffer, 'binary'); // 写入文件, 同步方法 console.log(fileName); // 写入成功后就可以访问到该图片路径了
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/addevelopment/897830.html