uni-app 之 base64 格式的图片显示与保存到相册

base64 格式的图片显示

<image class="img-tip" :src="base64Picture(detailObj.qrCode)" mode="widthFix" />
/** base64 图片查看
 * @param e 图片地址
 * @returns {string} 返回结果
 */
base64Picture(e) {
  if (!e) return "";
  if (!e.includes("data:image/png;base64,")) e = "data:image/png;base64," + e; // 添加 base64 前缀
  e = e.replace(/[\r\n]/g, ""); // 去除回车
  return e;
},

保存 base64 图片到相册

/** 保存 base64 图片到相册
 * @param {Object} e base64 图片数据
 * @param {Object} name 保存的图片名称
 */
saveBase64ToAlbum(e, name = 'image') {
  const path = `${wx.env.USER_DATA_PATH}/${name}.png`; // 指定图片的临时路径
  const fsm = wx.getFileSystemManager(); // 获取小程序的文件系统
  // 把 arraybuffer 数据写入到临时目录中
  fsm.writeFile({
    filePath: path,
    data: e.replace(/^data:image\/\w+;base64,/, ''),
    encoding: 'base64',
    success: () => {
      uni.saveImageToPhotosAlbum({
        filePath: path,
        success: () => {
          toolTip('图片已保存到相册');
        }
      });
    }
  })
}
/** 显示消息提示框
 * @param {Object} title 提示的内容,长度与icon取值有关
 * title取值:成功、错误、加载中图标在小程序最多显示7个汉字
 * title取值:不显示在小程序最多显示两行,App仅支持单行显示
 * @param {Object} duration 提示的延迟时间,单位毫秒
 * @param {Object} icon 图标(success.成功 error.错误 loading.加载中 none.不显示)
 * @param {Object} mask 是否显示透明蒙层,防止触摸穿透
 */
toolTip(title, duration, icon, mask) {
  uni.showToast({
    title: title,
    icon: icon || "none",
    mask: mask || false,
    duration: duration || 2000
  });
}
uni-app中,可以使用uni.base64ToArrayBuffer()方法将base64字符串转换为ArrayBuffer类型的数据,也可以使用uni.arrayBufferToBase64()方法将ArrayBuffer类型的数据转换为base64字符串。具体使用方法如下: 1. 将base64字符串转换为ArrayBuffer类型的数据: ```javascript let base64Str = 'SGVsbG8gV29ybGQh'; let arrayBuffer = uni.base64ToArrayBuffer(base64Str); console.log(arrayBuffer); ``` 2. 将ArrayBuffer类型的数据转换为base64字符串: ```javascript let arrayBuffer = new Uint8Array([72, 101, 108, 108, 111, 33]).buffer; let base64Str = uni.arrayBufferToBase64(arrayBuffer); console.log(base64Str); ``` 需要注意的是,uni.base64ToArrayBuffer()方法在某些情况下可能会出现中文乱码的问题。此时可以使用js-base64库中的方法进行转换,具体使用方法如下: 1. 安装js-base64库: ``` npm install js-base64 --save ``` 2. 将base64字符串转换为ArrayBuffer类型的数据: ```javascript import { Base64 } from 'js-base64'; let base64Str = '5L2g5aW977yM5LiW55WM'; let str = Base64.decode(base64Str); let arrayBuffer = new Uint8Array(str.length); for (let i = 0; i < str.length; i++) { arrayBuffer[i] = str.charCodeAt(i); } console.log(arrayBuffer); ``` 3. 将ArrayBuffer类型的数据转换为base64字符串: ```javascript import { Base64 } from 'js-base64'; let arrayBuffer = new Uint8Array([228, 184, 173, 229, 155, 189, 231, 154, 132]).buffer; let str = ''; let byteArray = new Uint8Array(arrayBuffer); for (let i = 0; i < byteArray.byteLength; i++) { str += String.fromCharCode(byteArray[i]); } let base64Str = Base64.encode(str); console.log(base64Str); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值