uniapp 图片存base64

uni-app亲测可用
// 转base64
    async urlToBase64(url) {
      // 非真机
      if (url.startsWith('blob:http:')||url.startsWith('blob:https:')) {
        return new Promise((resolve, reject) => {
          uni.request({
            url: url,
            method: 'GET',
            responseType: 'arraybuffer',
            success: res => {
              let base64 = wx.arrayBufferToBase64(res.data);
              base64 = 'data:image/jpeg;base64,' + base64;
              resolve(base64);
            },
            fail: err => {
              reject(err);
            }
          });
        });
      } else {
        // 真机
        return new Promise((resolve, reject) => {
          const systemInfo = uni.getSystemInfoSync();
          
          // 设备类型
          if (systemInfo.platform === 'android' || systemInfo.platform === 'ios') {
            // 使用 plus.io (Android/iOS)
            plus.io.resolveLocalFileSystemURL(url, (entry) => {
              entry.file((file) => {
                const reader = new plus.io.FileReader();
                reader.readAsDataURL(file);
                reader.onloadend = () => {
                  const base64 = reader.result;
                  resolve(base64);
                };
                reader.onerror = (err) => {
                  reject(err);
                };
              });
            }, (err) => {
              reject(err);
            });
          } else {
            // 在网页或小程序中使用uni.getFileSystemManager获取本地文件
            const fs = uni.getFileSystemManager();
            fs.readFile({
              filePath: url,
              encoding: 'base64',
              success: res => {
                const base64 = 'data:image/jpeg;base64,' + res.data;
                resolve(base64);
              },
              fail: err => {
                reject(err);
              }
            });
          }
        });
      }
    },
//使用
async init(url){
    //url:图片路径
    ​​​​​​​const base64Data = await this.urlToBase64(url);
},

亲测可用!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

### 实现 UniApp保存 Base64 编码文件到本地的方法 在 UniApp 开发环境中,可以通过 `uni.getFileSystemManager()` 获取文件管理器实例来操作文件系统。对于 Base64 数据的处理,可以先将其转换为临时文件路径,再通过调用 `saveImageToPhotosAlbum` 将其保存至相册。 以下是完整的代码示例: ```javascript function saveBase64ImageToLocal(base64Data) { const base64Header = "data:image/jpeg;base64,"; // 假设传入的是 JPEG 图片数据 let tempFilePath; if (!base64Data.startsWith(base64Header)) { console.error("Invalid Base64 data format"); return; } uni.showLoading({ title: '正在保存...', mask: true, }); // 创建文件管理器 const fileMgr = uni.getFileSystemManager(); // 定义临时文件路径 const filePath = `${wx.env.USER_DATA_PATH}/temp.jpg`; try { // 移除 Base64 头部并写入文件 fileMgr.writeFile({ filePath, data: base64Data.replace(base64Header, ""), encoding: 'base64', success() { tempFilePath = filePath; uni.saveImageToPhotosAlbum({ filePath: tempFilePath, success(res) { uni.hideLoading(); uni.showToast({ title: '保存成功!', icon: 'success' }); }, fail(err) { uni.hideLoading(); uni.showToast({ title: '保存失败,请重试!', icon: 'none' }); } }); }, fail(err) { uni.hideLoading(); uni.showToast({ title: '写入文件失败!', icon: 'none' }); } }); } catch (e) { uni.hideLoading(); uni.showToast({ title: '发生错误:' + e.message, icon: 'none' }); } } ``` #### 说明 上述方法实现了从 Base64 字符串保存图片到设备相册的过程[^1]。具体步骤如下: - 使用 `getFileSystemManager().writeFile` 方法将 Base64 数据写入临时文件。 - 调用 `saveImageToPhotosAlbum` 接口完成图片保存功能,并提供友好的加载提示和反馈消息[^2]。 注意:此方法适用于 Android 和 iOS 平台,但在某些情况下可能需要额外配置权限(如访问相册或储),需确保已正确设置应用权限声明。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值