HarmonyOS鸿蒙Next中packToFile保存的图片手机里面看不到

HarmonyOS鸿蒙Next中packToFile保存的图片手机里面看不到

packToFile保存的图片手机里面看不到

```javascript
public static async savePixelMapToAlbum(context: Context, pixel: image.PixelMap) {
  let helper = photoAccessHelper.getPhotoAccessHelper(context);
  let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpeg');
  let file = await fileIo.open(uri, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
  let imagePacker = image.createImagePacker();
  let packOpts: image.PackingOption = { format: 'image/jpeg', quality: 98 };

  imagePacker.packToFile(pixel, file.fd, packOpts, (err: BusinessError) => {
    if (err) {
      console.error(`Failed to pack the image to file.code ${err.code},message is ${err.message}`);
    } else {
      console.info('Succeeded in packing the image to file.');
      promptAction.showToast({ message: '已保存至相册' });
    }
  })
}

更多关于HarmonyOS鸿蒙Next中packToFile保存的图片手机里面看不到的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

使用的不是安全控件的方式保存图片,若是申请受限权限的方式保存图片,请确认下
有没有申请这个权限ohos.permission.WRITE_IMAGEVIDEO
ohos.permission.WRITE_IMAGEVIDEO 权限需要acg申请acl权限白名单
申请指南链接:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/declare-permissions-in-acl-V5

更多关于HarmonyOS鸿蒙Next中packToFile保存的图片手机里面看不到的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,使用packToFile方法保存的图片在手机中看不到,可能是由于以下原因:

  1. 文件路径问题:packToFile保存的图片可能被存储在一个非公开的目录中,导致文件管理器无法直接访问。鸿蒙系统对文件访问权限有严格的控制,某些目录仅限应用内部访问。

  2. 媒体库未更新:保存的图片可能未被系统媒体库及时扫描并更新。鸿蒙系统会在特定时间或事件触发时扫描媒体文件,如果保存后未触发扫描,图片不会出现在图库中。

  3. 文件格式或权限问题:保存的图片可能使用了非标准的格式或命名规则,导致系统无法正确识别。此外,文件的读写权限可能未正确设置,导致其他应用无法访问。

  4. 应用沙盒机制:鸿蒙系统采用了应用沙盒机制,每个应用的文件存储空间是独立的,除非显式共享,否则其他应用无法访问这些文件。

如果图片保存后未出现在手机中,可以检查保存路径是否符合公开目录要求,或者手动触发媒体库扫描。

在HarmonyOS鸿蒙Next中,使用packToFile方法保存的图片可能未显示在手机图库中,通常是因为文件未添加到媒体库。解决方法如下:

  1. 使用媒体扫描器:保存图片后,调用MediaScannerConnection.scanFile方法,将文件路径传递给媒体库,使其出现在图库中。

  2. 检查文件路径和权限:确保文件路径正确,且应用已获取WRITE_EXTERNAL_STORAGE权限。

  3. 文件格式和命名:确保图片格式为常见格式(如JPEG、PNG),且文件名不含特殊字符。

通过这些步骤,图片应能在图库中显示。

回到顶部