uniapp base64图片保存到相册

1.APP 保存base64格式图片(利用bitmap)

a.定义方法

saveImgFile(base64) {
    
    
    const bitmap = new plus.nativeObj.Bitmap("test");
    bitmap.loadBase64Data(base64, function() {
    
    
        const url = "_doc/" + new Date().getTime() + ".png";  // url为时间戳命名方式
        console.log('saveHeadImgFile', url)
        bitmap.save(url, {
    
    
            overwrite: true,  // 是否覆盖
            // quality: 'quality'  // 图片清晰度
        }, (i) => {
    
    
            uni.saveImageToPhotosAlbum({
    
    
                filePath: url,
                success: function() {
    
    
                    uni.showToast({
    
    
                        title: '图片保存成功',
                        icon: 'none'
                    })
                    bitmap.clear()
                }
            });
        }, (e) => {
    
    
            uni.showToast({
    
    
                title: '图片保存失败',
                icon: 'none'
            })
            bitmap.clear()
        });
    }, (e) => {
    
    
        uni.showToast({
    
    
            title: '图片保存失败',
            icon: 'none'
        })
        bitmap.clear()
    });
},

b.使用方法 src为base64格式图片的路径

<image :src="src" mode="" @click="saveImgFile(src)"></image>

2.微信小程序保存base64 格式图片

<button type=“primary” class=“saveBtn” @tap=“getSaveImg(qcCode)”>保存二维码至相册
保存二维码至相册,先判断用户是否授权,如果用户已经授权则直接保存。

uni.getFileSystemManager()是文件管理器对象

var FileSystemManager = uni.getFileSystemManager()

FileSystemManager.writeFile(Object object) // 写文件

uni.saveImageToPhotosAlbum(OBJECT) 保存图片到系统相册。注意:图片文件路径,可以是临时文件路径也可以是永久文件路径,不支持网络图片路径。所以保存时的图片需要写入一个临时路径,调用uni.getFileSystemManager()

下面代码中的qrcode是base64格式的,需要将前面的”data:image/png;base64“这一段去掉,才可以使用接下来调用的api

// 获取授权判断是否授权相册
getSaveImg(qrcode){
    
    
    let that = this;
    uni.getSetting({
    
    
         success: (res)=>{
    
    
             console.log(res)
             if (!res.authSetting["scope.writePhotosAlbum"]){
    
    
                 uni.showModal({
    
    
                     title: '警告',
                     content: '检测到您没您未授权相册权限,点击确定获取授权。',
                     success: function (res) {
    
    
                        if (res.confirm) {
    
    
                          uni.authorize({
    
    
                                 scope: 'scope.writePhotosAlbum',
                                 success() {
    
    
                                   // 用户已经同意
                                   that.saveImgToAlbum(qrcode);
                                 },
                                 fail(err){
    
    
                                 console.log('用户拒绝授权相册') 

                                 }
                            })		 
                        }
                     }
                 })
             }else{
    
    
                 that.saveImgToAlbum(qrcode);
             }
         },
         fail: () => {
    
    
            console.log('点击了拒绝')

         }
    })
},
// 保存二维码图片到相册
saveImgToAlbum(qrcode) {
    
    
    let base64 = qrcode.replace(/^data:image\/\w+;base64,/, "");//去掉data:image/png;base64,
    var fileManager = uni.getFileSystemManager();
    fileManager.writeFile({
    
    
        filePath: wx.env.USER_DATA_PATH+'/img.jpg', // 指定图片的临时路径
        data: base64, // 要写入的文本或二进制数据
        encoding: 'base64', // 指定写入文件的字符编码
        success: res => {
    
    
            console.log('写入文件成功', res)
            console.log(wx.env.USER_DATA_PATH + '/img.jpg')
            uni.saveImageToPhotosAlbum({
    
     // 保存图片到相册
              filePath: wx.env.USER_DATA_PATH + '/img.jpg',
              success: function (res) {
    
    
                  console.log('保存成功', res)
                    uni.showToast({
    
    
                      title: '保存成功',
                    })
              },
              fail: function (err) {
    
    
                  console.log('保存失败', err)
              }
            })
        },
        file: err => {
    
    
            console.log('写入文件失败', err)
        }
    })
},

参考文档:https://blog.csdn.net/wupinlong/article/details/115670905

猜你喜欢

转载自blog.csdn.net/m0_52459016/article/details/122114133
今日推荐