求大佬告知如何保存图片到相册

​我们浏览应用时保存图片到手机这种场景是比较常见的,选择器(Picker)是一个封装PhotoViewPicker、DocumentViewPicker、AudioViewPicker等系统应用选择与保存能力的模块。应用可以自行选择使用哪种picker实现文件选择和文件保存的功能。

HarmonyOS
2024-05-28 20:16:37
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
juliedan

接下来的示例是将应用内图片保存到图库。

1、引入photoAccessHelper

import photoAccessHelper from '@ohos.file.photoAccessHelper';

2、展示图片

Image($r('app.media.icon')) 
  .height(300) 
  .width(300)

3、设置点击事件

 SaveButton().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: "设置权限失败" }) 
          } 
        })

4、其中需要在module.json5添加权限

 "requestPermissions": [ { 
      "name": "\ohos.permission.WRITE_IMAGEVIDEO" 
    }]

这样就可以实现将图片保存到相册

适配版本信息

· IDE:DevEco Studio 4.0.3.600

·SDK:HarmoneyOS 4.0.0.42

分享
微博
QQ
微信
回复1
2024-05-29 21:15:42
相关问题
大佬告知如何保存cookie
1028浏览 • 2回复 待解决
大佬告知如何导出图片
594浏览 • 1回复 待解决
大佬告知怎么保存webview
555浏览 • 1回复 待解决
如何保存网络图片相册
218浏览 • 1回复 待解决
如何保存本地图片相册
229浏览 • 1回复 待解决
如何保存一张PNG图片相册
605浏览 • 1回复 待解决
大佬告知如何实现联合类型?
325浏览 • 1回复 待解决
大佬告知webview如何设置UA
338浏览 • 1回复 待解决
大佬告知如何切换横竖屏
834浏览 • 1回复 待解决
大佬告知如何卸载debug包
268浏览 • 1回复 待解决
大佬告知如何引用HSP库
931浏览 • 1回复 待解决
大佬告知如何得到线程ID
605浏览 • 1回复 待解决
大佬告知arkts如何获取调用栈
364浏览 • 1回复 待解决
大佬告知如何序列化对象
347浏览 • 1回复 待解决
大佬告知如何后台播放音乐
915浏览 • 1回复 待解决
大佬告知AOT编译选项如何设置
844浏览 • 1回复 待解决
大佬告知如何读取文件的大小
662浏览 • 1回复 待解决
大佬告知如何获取组件宽高
72浏览 • 1回复 待解决
大佬告知如何设置包名
64浏览 • 1回复 待解决
大佬告知如何屏蔽触摸事件
372浏览 • 1回复 待解决
大佬告知依赖包如何使用?
483浏览 • 1回复 待解决
大佬告知如何实现复制功能
680浏览 • 1回复 待解决
大佬告知如何实现录音监听
848浏览 • 1回复 待解决
大佬告知通用组件如何打包
292浏览 • 1回复 待解决
大佬告知如何判断当前版本
688浏览 • 1回复 待解决