HarmonyOS鸿蒙Next中应用往图库中新建指定目录,并在该目录中新增或删除指定图片或视频

HarmonyOS鸿蒙Next中应用往图库中新建指定目录,并在该目录中新增或删除指定图片或视频 项目中,有相册模块,支持图片或视频等资源,新增或删除等操作,想咨询如何实现,是否支持

3 回复

可以通过删除媒体文件的接口或操作公共目录数据实现删除操作。

参考文档:

  1. 删除媒体文件
    https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-photoaccesshelper-V5#deleteassets11
  2. 从数据库中删除一个或多个数据记录
    https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-inner-ability-dataabilityhelper-V5#dataabilityhelperdelete

图片保存相关文档;

  1. 安全控件保存
    https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-security-components-savebutton-V5
  2. 获取相册管理模块
    https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-photoaccesshelper-V5#photoaccesshelpergetphotoaccesshelper
  3. 打开文件,实现持续写入
    https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-fs-V5#fsopen

参考代码

使用getPhotoAccessHelpercreateAssetfs.openfs.write等接口将数据存到本地图库中

async saveImage(buffer: ArrayBuffer | string): Promise<void> {
  let context = this as common.UIAbilityContext;
  let helper = photoAccessHelper.getPhotoAccessHelper(context);
  let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpg');
  let file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
  await fs.write(file.fd, buffer);
  await fs.close(file.fd);
}

使用photoViewPicker.savefs.openfs.write等接口将数据存到用户选择路径的数据库中

async pickerSave(buffer: ArrayBuffer | string): Promise<void> {
  const photoSaveOptions = new picker.PhotoSaveOptions(); // 创建文件管理器保存选项实例
  photoSaveOptions.newFileNames = ['PhotoViewPicker ' + new Date().getTime() + 'jpg'] // 保存文件名(可选)
  const photoViewPicker = new picker.PhotoViewPicker;
  photoViewPicker.save(photoSaveOptions)
    .then(async (photoSvaeResult) => {
      console.info('PhotoViewPicker.save successfully,photoSvaeResult uri:' + JSON.stringify(photoSvaeResult));
      let uri = photoSvaeResult[0];
      let file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
      await fs.write(file.fd, buffer);
      await fs.close(file.fd);
      promptAction.showToast({
        message: $r('app.string.image_request_success'),
        duration: 2000
      })
    })
}

更多关于HarmonyOS鸿蒙Next中应用往图库中新建指定目录,并在该目录中新增或删除指定图片或视频的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,应用可以通过PhotoAccessHelperFileAsset接口操作图库。首先,获取PhotoAccessHelper实例,然后使用createAsset方法在指定目录中创建图片或视频文件。指定目录可通过createAlbum方法创建。删除操作则使用deleteAssets方法,传入要删除的文件URI。具体步骤如下:

  1. 获取PhotoAccessHelper实例:

    const photoAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
  2. 创建指定目录:

    const albumName = 'MyAlbum';
    const albumUri = await photoAccessHelper.createAlbum(albumName);
  3. 在指定目录中新增图片或视频:

    const assetType = photoAccessHelper.PhotoAssetType.IMAGE; // 或 VIDEO
    const assetUri = await photoAccessHelper.createAsset(albumUri, 'myImage.jpg', assetType);
  4. 删除指定图片或视频:

    await photoAccessHelper.deleteAssets([assetUri]);

以上操作需确保应用已获取ohos.permission.READ_MEDIAohos.permission.WRITE_MEDIA权限。

在HarmonyOS鸿蒙Next中,应用可以通过MediaLibrary API操作图库。首先,使用MediaLibrary.getMediaLibrary()获取实例,然后通过createAsset()方法在指定目录中创建图片或视频。删除操作则通过deleteAsset()实现。确保应用已获取ohos.permission.WRITE_MEDIA权限。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!