HarmonyOS 使用安全控件保存图片到本地失败

使用安全空间保存PixelMap格式的图片到本地时,api提示成功但相册里没有,此时给app进程终止(目前看必须这么做,否则相册没有图片),相册里就出现那张图片了。

操作步骤:

1、使用安全空间保存PixelMap格式的图片到本地。

import { util } from '@kit.ArkTS';
import { image } from '@kit.ImageKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import { fileIo } from '@kit.CoreFileKit';

SaveButton(this.saveButtonOptions).onClick(async (event, result: SaveButtonOnClickResult) => {
  if (result == SaveButtonOnClickResult.SUCCESS) {
    let bs64Helper = new util.Base64Helper();
    let base64: string = ''
    let buffer: ArrayBuffer = bs64Helper.decodeSync(base64, util.Type.MIME).buffer as ArrayBuffer;
    let imageSource = image.createImageSource(buffer);
    let opts: image.DecodingOptions = { editable: true };
    imageSource.createPixelMap(opts).then(async (pixelMap: image.PixelMap) => {
      // 获取相册的保存路径
      let contextThis: Context = getContext(this);
      let paHelper = photoAccessHelper.getPhotoAccessHelper(contextThis);
      let uri = await paHelper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpeg');
      let file = await fileIo.open(uri, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
      let imagePackerApi = image.createImagePacker();
      let packOpts: image.PackingOption = { format: 'image/jpeg', quality: 98 };

      imagePackerApi.packToFile(pixelMap, file.fd, packOpts, (error: BusinessError) => {
        if (error) {
          console.log(JSON.stringify(error))
        } else {
          console.log('成功')
        }
      })
    }).catch((error: BusinessError) => {
      console.log(JSON.stringify(error))
    })
  }
})
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.

2、弹出的安全控件保存图片后packToFile没有错误信息但相册也没有图片,接下来只要app杀进程图片就立刻出现在相册里。

HarmonyOS
2025-01-09 18:42:10
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
zbw_apple

将图片写入文件后,还需要调用fs.close触发媒体库扫描,这样才能及时在相册里看到刚保存的图片。

分享
微博
QQ
微信
回复
2025-01-09 20:37:17


相关问题
HarmonyOS 保存图片本地相册
787浏览 • 1回复 待解决
如何保存http网络图片本地
786浏览 • 1回复 待解决
如何保存本地图片相册中
1989浏览 • 1回复 待解决
HarmonyOS 图片保存失败
759浏览 • 1回复 待解决
HarmonyOS 安全控件使用
513浏览 • 1回复 待解决
HarmonyOS H5页面保存图片本地相册
716浏览 • 1回复 待解决
HarmonyOS 安全控件使用问题
926浏览 • 1回复 待解决
HarmonyOS 实现保存图片相册
904浏览 • 1回复 待解决
HarmonyOS 截图保存图片相册
652浏览 • 1回复 待解决
HarmonyOS 保存图片相册问题
1067浏览 • 1回复 待解决
HarmonyOS 保存图片系统相册
826浏览 • 1回复 待解决
HarmonyOS SaveButton保存图片授权失败
754浏览 • 1回复 待解决
HarmonyOS 保存图片相册权限问题
937浏览 • 1回复 待解决
HarmonyOS Image展示本地图片失败
926浏览 • 1回复 待解决
HarmonyOS保存图片系统相册问题咨询
1334浏览 • 1回复 待解决