1# 相册资源使用指导 2 3mediaLibrary提供相册相关的接口,供开发者创建、删除相册,获取相册中的图片资源等。 4 5> **说明:** 6> 7> 在进行功能开发前,请开发者查阅[媒体库开发概述](medialibrary-overview.md),了解如何获取媒体库实例和如何申请媒体库功能开发相关权限。 8 9为了保证应用的运行效率,大部分MediaLibrary调用都是异步的,对于异步调用的API均提供了callback和Promise两种方式,以下示例均采用Promise函数,更多方式可以查阅[API参考](../reference/apis/js-apis-medialibrary.md)。 10 11## 获取相册中的图片/视频 12 13获取相册中的图片、视频有两种方式: 14 15一是通过[MediaLibrary.getFileAssets](../reference/apis/js-apis-medialibrary.md#getfileassets7-1)指定相册以获取媒体资源,参考[获取指定相册的媒体资源](medialibrary-resource-guidelines.md#指定相册); 16 17二是通过[Album.getFileAssets](../reference/apis/js-apis-medialibrary.md#getfileassets7-3)使用相册Album实例获取媒体资源,参考[获取相册中的图片或视频](medialibrary-resource-guidelines.md#获取相册中的图片或视频)。 18 19## 创建相册 20 21通过[MediaLibrary.createAsset](../reference/apis/js-apis-medialibrary.md#createasset8-1)可以创建媒体资源,可以通过创建图片或视频文件时设置的相对路径,创建出相册。相对路径的命名即为相册名称。 22 23**前提条件** 24 25- 获取媒体库mediaLibrary实例。 26- 申请媒体库读写权限“ohos.permission.WRITE_MEDIA”。 27 28下面以创建相册myAlbum为例。 29 30**开发步骤** 31 321. 调用getPublicDirectory获取文件公共路径。 33 34 获取文件公共路径的更多指导可参考[获取文件保存的公共目录](medialibrary-filepath-guidelines.md#获取文件保存的公共目录)。 35 362. 调用createAsset新建图片,并设置相对路径为path+'myAlbum/'。 37 38 即在创建相册的同时,往里面放了一张图片。 39 40```ts 41async function example() { 42 let mediaType = mediaLibrary.MediaType.IMAGE; 43 let DIR_IMAGE = mediaLibrary.DirectoryType.DIR_IMAGE; 44 const context = getContext(this); 45 let media = mediaLibrary.getMediaLibrary(context); 46 const path = await media.getPublicDirectory(DIR_IMAGE); 47 //myAlbum为新建文件保存路径,也是新建相册的名称 48 media.createAsset(mediaType, 'test.jpg', path + 'myAlbum/', (err, fileAsset) => { 49 if (fileAsset === undefined) { 50 console.error('createAlbum failed, message = ' + err); 51 } else { 52 console.info('createAlbum successfully, message = ' + JSON.stringify(fileAsset)); 53 } 54 }); 55} 56``` 57 58## 重命名相册 59 60重命名修改的是相册的FileAsset.albumName属性,即相册名称。修改后再通过[Album.commitModify](../reference/apis/js-apis-medialibrary.md#commitmodify8-3)更新到数据库中。 61 62**前提条件** 63 64- 获取媒体库mediaLibrary实例。 65- 申请媒体库读写权限“ohos.permission.WRITE_MEDIA”。 66 67下面以重命名相册为“newAlbum“为例。 68 69**开发步骤** 70 711. 建立检索条件,用于获取目标相册。 722. 调用getAlbums获取相册列表。 733. 将相册重命名为“newAlbum“。 744. 调用Album.commitModify将更新的相册属性修改到数据库中。 75 76```ts 77async function example() { 78 let AlbumNoArgsfetchOp = { 79 selections: '', 80 selectionArgs: [], 81 }; 82 const context = getContext(this); 83 let media = mediaLibrary.getMediaLibrary(context); 84 let albumList = await media.getAlbums(AlbumNoArgsfetchOp); 85 let album = albumList[0]; 86 album.albumName = 'newAlbum'; 87 //回调返回空 88 album.commitModify().then(() => { 89 console.info("albumRename successfully"); 90 }).catch((err) => { 91 console.error("albumRename failed with error: " + err); 92 }); 93} 94``` 95