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

项目中,有相册模块,支持图片或视频等资源,新增或删除等操作,如何实现。

HarmonyOS
2024-11-14 08:59:57
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

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

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/js-apis-file-picker-V5#photosaveoptions

2.安全控件保存​https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-security-components-savebutton-V5

3.获取相册管理模块​https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-photoaccesshelper-V5#photoaccesshelpergetphotoaccesshelper

4.打开文件,实现持续写入​https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-fs-V5#fsopen

参考:

使用getPhotoAccessHelper、createAsset、fs.open、fs.write等接口将数据存到本地图库中。​

async saveImage(buffer: ArrayBuffer | string): Promise<void> { 
  let context = getContext(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.save、fs.open、fs.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 
  }) 
}) 
}
分享
微博
QQ
微信
回复
2024-11-14 17:13:17
相关问题
如何指定判断当前编译架构
465浏览 • 1回复 待解决
如何监听文件文件目录的变化
1734浏览 • 1回复 待解决
IDE无法新建har hsp模版
814浏览 • 1回复 待解决
http请求的caPath路径如何指定
375浏览 • 1回复 待解决
HarmonyOS图片压缩不到指定大小
628浏览 • 1回复 待解决
HarmonyOS项目架构参考文档Demo视频
340浏览 • 2回复 待解决
怎么模拟器相册增加图片视频
664浏览 • 1回复 待解决