微信小程序之将base64图片转为本地图片

开始

最近项目中遇到个问题,就是生成海报的时候,需要画上小程序的二维码,然后后台返回的二维码图片是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(/[\r\n]/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);  // 写入成功后就可以访问到该图片路径了
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值