HarmonyOS 鸿蒙Next中生成的二维码图如何保存到本地

HarmonyOS 鸿蒙Next中生成的二维码图如何保存到本地

2 回复

在HarmonyOS Next中,使用ImageSaver组件可将二维码图像保存到本地。首先通过Image组件加载二维码,然后调用ImageSaver.save()方法指定保存路径和格式。系统会自动处理文件存储权限,保存成功后返回文件URI。

更多关于HarmonyOS 鸿蒙Next中生成的二维码图如何保存到本地的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,可以通过以下步骤将生成的二维码图像保存到本地:

  1. 生成二维码图像:使用QRCode相关API生成二维码,获取到PixelMap对象。

  2. 转换为可保存格式:将PixelMap转换为ImageSource,然后编码为JPEG或PNG格式的ArrayBuffer

  3. 保存到本地:通过PhotoAccessHelper申请相册权限,使用createAsset()方法将图像数据写入设备相册。

示例代码:

import photoAccessHelper from '@ohos.file.photoAccessHelper';

// 生成二维码后保存
async function saveQRCodeToGallery(pixelMap: image.PixelMap) {
  // 转换PixelMap为JPEG数据
  const imageSource = image.createImageSource(pixelMap);
  const packOptions = { format: "image/jpeg", quality: 100 };
  const arrayBuffer = await imageSource.createPixelMap(packOptions);

  // 获取PhotoAccessHelper实例
  let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);

  // 创建并保存到相册
  let uri = await phAccessHelper.createAsset(photoAccessHelper.PhotoType.IMAGE, "qrcode.jpg");
  let fd = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
  await fs.write(fd, arrayBuffer);
  fs.close(fd);
}

注意:需要申请ohos.permission.READ_IMAGEVIDEOohos.permission.WRITE_IMAGEVIDEO权限。

回到顶部