不具备完整的封装好的组件。不过可以参考一下电子相册。参考链接:https://developer.huawei.com/consumer/cn/codelabsPortal/carddetails/tutorials\_NEXT-ElectronicAlbum保存图片到相册,推荐使用SaveButton。参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-security-components-savebutton-V5参考demo:import photoAccessHelper from '@ohos.file.photoAccessHelper'; import fs from '@ohos.file.fs'; @Entry @Component struct Index { @State message: string = 'Hello World' @State saveButtonOptions: SaveButtonOptions = { text: SaveDescription.SAVE_IMAGE, buttonType: ButtonType.Capsule } // 设置安全控件按钮属性 build() { Row() { Column() { Image($r('app.media.app_icon')) .height(300) .width(300) SaveButton(this.saveButtonOptions).onClick(async (_event: ClickEvent, result: SaveButtonOnClickResult) => { if (result == SaveButtonOnClickResult.SUCCESS) { try { const context = getContext(this); let helper = photoAccessHelper.getPhotoAccessHelper(context); // onClick触发后5秒内通过createAsset接口创建图片文件,5秒后createAsset权限收回。 let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpg'); // 使用uri打开文件,可以持续写入内容,写入过程不受时间限制 let file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); try { context.resourceManager.getMediaContent($r('app.media.startIcon').id, 0) .then(async value => { let media = value.buffer; // 写到媒体库文件中 await fs.write(file.fd, media); await fs.close(file.fd); AlertDialog.show({message:'已保存至相册!'}); }); } catch (err) { console.error("error is "+ JSON.stringify(err)) } } catch (error) { console.error("error is "+ JSON.stringify(error)); } } else { AlertDialog.show({ message: "设置权限失败" }) } }) } .width('100%') } .height('100%') } }
不具备完整的封装好的组件。不过可以参考一下电子相册。
参考链接:https://developer.huawei.com/consumer/cn/codelabsPortal/carddetails/tutorials\_NEXT-ElectronicAlbum
保存图片到相册,推荐使用SaveButton。参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-security-components-savebutton-V5
参考demo: