Сохраняйте картинки uniapp base64 в альбом

1. Приложение сохраняет изображения в формате base64 (с использованием растрового изображения).

а. Метод определения

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()
    });
},

Б. Используйте метод src в качестве пути к изображению в формате base64.

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

2. Апплет WeChat сохраняет изображения в формате base64.

<button type="primary" class="saveBtn" @tap="getSaveImg(qcCode)">Сохраните QR-код в альбом. При сохранении QR-кода в альбом сначала определите, авторизовал ли его пользователь.
Если пользователь разрешил это, сохраните его напрямую.

uni.getFileSystemManager() — объект файлового менеджера.

вар FileSystemManager = uni.getFileSystemManager()

FileSystemManager.writeFile(объект 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 .

Supongo que te gusta

Origin blog.csdn.net/m0_52459016/article/details/122114133
Recomendado
Clasificación