小程序中将base64图片保存到相册中的方法介绍
本篇文章给大家带来的内容是关于小程序中将base64图片保存到相册中的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 一、授权获取 1、相关api 2、授权获取流程一般为 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 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),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) } }) } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |