十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章将为大家详细讲解有关小程序中如何将base64图片保存到相册中的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
成都创新互联公司十多年专注成都高端网站建设按需网站设计服务,为客户提供专业的成都网站制作,成都网页设计,成都网站设计服务;成都创新互联公司服务内容包含成都网站建设,微信小程序,软件开发,网络营销推广,网络运营服务及企业形象设计;成都创新互联公司拥有众多专业的高端网站制作开发团队,资深的高端网页设计团队及经验丰富的架构师高端网站策划团队;我们始终坚持从客户的角度出发,为客户量身订造网络营销方案,解决网络营销疑问。一、授权获取
1、相关api
wx.getSetting
wx.authorize
2、授权获取流程一般为
是否有该权限 ——> 若无 ——> 调起授权弹窗 ——> 同意 ——> 使用相关api
(如果用户拒绝授权则可使用wx.opensetting引导用户前往授权设置页授权)
3、代码实现
static async weAuthCheck(type = 'address') { let resGetting = await new Promise((resolve, reject) => { wepy.getSetting({ success: res => { // console.log(res, 'getsetting') if (res.authSetting.hasOwnProperty(`scope.${type}`) && res.authSetting[`scope.${type}`]) { resolve({ succeeded: true }) } else { wepy.authorize({ scope: `scope.${type}`, success: () => { resolve({ succeeded: true }) }, fail: err => { // console.log(err, 'errrrr') resolve({ succeeded: false, err: err }) } }) } }, fail: err => { resolve({ succeeded: false, err: err }) } }) }) console.log('getSetting res: \n', resGetting) return resGetting }
二、写入临时文件
1、相关api
文件系统
writeFile
2、参数encoding 用于说明 写入的参数data的格式是什么,并非是将data按encoding的形式写入。在这里我们应该指定encoding为base64
3、代码实现
// 先获得一个实例 this.fileManager = wx.getFileSystemManager() this.fileManager.writeFile({ filePath: `${wx.env.USER_DATA_PATH}/qrcode_${timestamp}.png`, data: data, encoding: 'base64', success: res => { console.log('res: \n:', res) }, fail: res => { console.log(res) } })
三、格式化字符串
1、base64字符串的格式: "data:image/png;base64,...........",逗号前面这一段为格式说明,用于说明后续的内容格式是图片格式为png的base64格式。
2、如果直接将整一串字符传入,虽然可以保存成功,但是将导致图片文件格式错误。因此再做一步切割操作
let startIdx = this.qrcode.indexOf('base64,') + 7
四、完整实现
async onTapSaveQrcode() { let startIdx = this.qrcode.indexOf('base64,') + 7 let resCheck = await this.$weAuthCheck('writePhotosAlbum') let timestamp = new Date().getTime() let self = this if (resCheck.succeeded) { wepy.showLoading() this.fileManager.writeFile({ filePath: `${wx.env.USER_DATA_PATH}/qrcode_${timestamp}.png`, data: this.qrcode.slice(startIdx), encoding: 'base64', success: res => { console.log('res: \n:', res) wx.saveImageToPhotosAlbum({ filePath: `${wx.env.USER_DATA_PATH}/qrcode_${timestamp}.png`, success: res => { self.$emit('save-qrcode-success') wepy.showToast({ title: '保存成功' }) }, fail: err => { console.log(err) if (!err.errMsg.includes('cancel')) { wepy.showToast({ title: err.errMsg, icon: 'none' }) } }, complete: () => { wepy.hideLoading() } }) }, fail: res => { wepy.hideLoading() console.log(res) } }) } }
关于“小程序中如何将base64图片保存到相册中的方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。