HarmonyOS开发之使用PhotoViewPicker(图库选择器)保存图片

news/2025/1/15 15:06:50/

一:效果图

二:添加依赖

import fs from '@ohos.file.fs';//文件管理
import picker from '@ohos.file.picker'//选择器

三:下载,保存图片的实现

// 下载图片imgUrldownloadAndSaveImage(imgUrl: string) {http.createHttp().request(imgUrl,(error, data: http.HttpResponse) => {if (error) {promptAction.showToast({message: '下载失败',duration: 2000})return}if (data.result instanceof ArrayBuffer) {this.pickerSave(data.result as ArrayBuffer)}})}//保存图片async pickerSave(buffer: ArrayBuffer): Promise<void> {const photoSaveOptions = new picker.PhotoSaveOptions() // 创建文件管理器保存选项实例photoSaveOptions.newFileNames = ['PhotoView' + new Date().getTime() + '.jpg']//创建一个开头为PhotoView_xxxx_.jpg的图片const photoViewPicker = new picker.PhotoViewPickerphotoViewPicker.save(photoSaveOptions).then(async (photoSaveResult) => {let uri = photoSaveResult[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: "保存成功"})}).catch(error => {console.log('downloadAndSaveImage  保存失败:', error)promptAction.showToast({message: "保存失败"})})}

四:在Page中的使用

@Entry
@Component
struct ImgPage {@State imageUrl: string =""aboutToAppear(){const params = router.getParams()if (params) {this.imageUrl = params['imageUrl']//https:xxxxxx.pngif (!this.imageUrl) {console.error("imageUrl 加载失败: imageUrl 为空");}}}build() {Column() {Stack().height(30)HeadlineBar({title:"详情",heightBar: 45,fontSize:20,closeCallback: () => {router.back()}})// 显示每个图片Image(this.imageUrl).alt($r('app.media.icon'))// 使用alt,在网络图片加载成功前使用占位图.width(300).height(400).margin({top:30}).borderRadius(8)Button('立即下载').fontSize(15).width(131).height(54).margin({top:30}).onClick(()=>{if (this.imageUrl) {weatherApi.downloadAndSaveImage(this.imageUrl)}})}.width('100%').height('100%')}
}


http://www.ppmy.cn/news/1526219.html

相关文章

笔记共享平台|基于Java+vue的读书笔记共享平台系统(源码+数据库+文档)

笔记共享平台|读书笔记共享平台系统 目录 基于Javavue的读书笔记共享平台系统 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布道…

林草湿地址、导出echart为word

2.导出 // 导出exportDoc () {this.loading truelet arrRefs [this.$refs.endChart, this.$refs.processChart, this.$refs.officeEndChart]setTimeout(() > {Promise.all(arrRefs.map((canvasDom) > {return this.html2canvasHandle(canvasDom)})).then(res > {let…

系统架构设计师 需求分析篇一

&#x1f4d8; 结构化分析SA 思想 自顶向下&#xff1a;像剥洋葱一样&#xff0c;层层深入&#xff0c;大问题拆成小问题&#xff0c;再拆成更小的问题。 核心模型 数据字典 &#x1f4d4;&#xff1a;记录数据元素的点点滴滴&#xff0c;从属性到使用方式&#xff0c;无所…

音视频开发常见的开源项目汇总

FFmpeg 地址&#xff1a;https://ffmpeg.org/介绍&#xff1a;FFmpeg 是一个非常强大的开源多媒体框架&#xff0c;它可以用来处理视频和音频文件。它支持多种格式的转换、编码、解码、转码、流处理等。FFmpeg 包括了 libavformat、libavcodec、libavutil、libswscale、libpos…

实时监控分析广告数据跳转统计平台源码

广告跳转实时分析页面统计系统&#xff0c;可选择生成html页面样式&#xff0c;可自定义设置页面域名后缀&#xff0c;可指定跳转指定网址&#xff0c; 可记录单个页面的访问记录&#xff0c;可对生成的单个链接进行备注&#xff0c;自定义等待时间进行跳转。 源码下载&#…

GitHub上克隆项目

从GitHub上克隆项目是一个简单且直接的过程&#xff0c;它允许你将远程仓库中的项目复制到你的本地计算机上&#xff0c;以便进行进一步的开发、测试或学习。以下是一个详细的步骤指南&#xff0c;帮助你从GitHub上克隆项目。 一、准备工作 1. 安装Git 在克隆GitHub项目之前…

uni-app开发微信小程序

Uni-app 是一个使用 Vue.js 开发跨平台应用的框架&#xff0c;支持构建微信小程序、H5、iOS、Android 等多种平台的应用。以下是使用 Uni-app 开发微信小程序的基本步骤和一些实用技巧。 1. 环境准备 安装 HBuilderX HBuilderX 是 DCloud 提供的 IDE&#xff0c;支持 Uni-app …

网站优化与服务器:性能提升的双重奏

在互联网高速发展的今天&#xff0c;网站的响应速度和用户体验直接影响着用户的留存率和转化率。而服务器作为网站运行的基石&#xff0c;其性能和配置对网站优化起着至关重要的作用。 服务器对网站性能的影响 服务器的响应速度、稳定性和处理能力直接影响网站的加载时间和运行…