当前位置: 首页 > news >正文

【HarmonyOS NEXT】实现保存base64图片到图库

上篇文章介绍了HarmonyOS NEXT如何保存base64文件到download目录下,本次介绍如何保存base64图片到图库,网络图片保存方式大同小异,先下载图片,然后再保存

phAccessHelper.showAssetsCreationDialog

参考官方文档’

@ohos.file.photoAccessHelper (相册管理模块)-ArkTS API-Media Library Kit(媒体文件管理服务)-媒体 - 华为HarmonyOS开发者 (huawei.com)

完整代码如下

//模拟数据param ="{\"dataBase64\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4QAAACiCAYAAAAZUwONAAAAAXNSR0IArs4c6QAAHWFJREFUeF7t3QusHFX9B/CDQdKqYCwiggELpjFS8IGaohXaYgCDBnxUbCUVovUFCKQxGvFZXokYIygGBTWFGGpiqtCYCohiiVURREUoj6YRW6BYKU2lAq0x/ec3cfY/d9m9u927OzO98znJTXt3Z+ac85lTki/nzJy9du3atSspBAgQIECAAAECBAgQINA4gb0Ewsbdcx0mQIAAAQIECBAgQIBAJiAQGggECBAgQIAAAQIECBBoqIBA2NAbr9sECBAgQIAAAQIECBAQCI0BAgQIECBAgAABAgQINFRAIGzojddtAgQIECBAgAABAgQICITGAAECBAgQIECAAAECBBoqIBA29MbrNgECBAgQIECAAAECBARCY4AAAQIECBAgQIAAAQINFRAIG3rjdZsAAQIECBAgQIAAAQICoTFAgAABAgQIECBAgACBhgoIhA298bpNgAABAgQIECBAgAABgdAYIECAAAECBAgQIECAQEMFBMKG3njdJkCAAAECBAgQIECAgEBoDBAgQIAAAQIECBAgQKChAgJhQ2+8bhMgQIAAAQIECBAgQEAgNAYIECBAgAABAgQIECDQUAGBsKE3XrcJECBAgAABAgQIECAgEBoDBAgQIECAAAECBAgQaKiAQNjQG6/bBAgQIECAAAECBAgQEAiNAQIECBAgQIAAAQIECDRUQCBs6I3XbQIECBAgQIAAAQIECAiExgABAgQIECBAgAABAgQaKiAQNvTG6zYBAgQIECBAgAABAgQEQmOAAAECBAgQIECAAAECDRUQCBt643WbAAECBAgQIECAAAECAqExQIAAAQIECBAgQIAAgYYKCIQNvfG6TYAAAQIECBAgQIAAAYHQGCBAgAABAgQIECBAgEBDBQTCht543SZAgAABAgQIECBAgIBAaAwQIECAAAECBAgQIECgoQICYUNvvG4TIECAAAECBAgQIEBAIDQGCBAgQIAAAQIECBAg0FABgbChN163CRAgQIAAAQIECBAgIBAaAwQIECBAgAABAgQIEGiogEDY0Buv2wQIECBAgAABAgQIEBAIazoGfvrTn6ZHHnkkfepTn6ppCzWLAAECBAgQIECAAIE9XUAgrOkdjEB4//33pwsuuKCmLdQsAgQIECBAgAABAgT2dAGBsKZ3UCCs6Y3RLAIECBAgQIAAAQKTSEAgrOnNrEMg3LBhQ/rRj36UfvnLX6aHHnoobd26NU2fPj3NmTMnLVy4MB1zzDFd9bZs2ZKWL1+ebrjhhvTAAw+kKVOmpNe97nVpwYIF6T3veU/ae++9ayqvWQQIECBAgAABAgSaIyAQ1vReVx0II8h96EMfSk899VQm9OEPfzi9/OUvT9dee2169NFHs88uvfTS9LnPfe45gmvXrk3vf//7U/wZZfbs2Wn79u3pL3/5S/Z7fPeDH/wgvehFL6qpvmYRIECAAAECBAgQaIaAQFjT+1xlIIxnF48++uj07LPPZjrXXHNNWrx4cfb3Bx98ML3lLW/JZguj3HLLLemEE05oKW7bti3NnTs3/fnPf84++/znP58uuuiitHPnzrRo0aL04x//OPs8XpbzzW9+s6b6mkWAAAECBAgQIECgGQICYU3vc5WB8Etf+lIW4qK84AUvSE888USaOnVqSypCXswORjnjjDPSsmXLWt9dddVV6ayzzsp+f/7zn582btyYDjzwwOz33/zmN+nYY49tHRszhq997Wtregc0iwABAgQIECBAgMDkFxAIa3qPqwyEp556alq5cmUmc9RRR6V77rlnjFI8G/jBD34w++xNb3pTuvPOO1vfv/71r28tDT3uuOPS6tWrW9/FstF999239Xu8QfWSSy6p6R3QLAIECBAgQIAAAQKTX0AgrOk9rjIQxgtj4mUyUSLAPfnkk2NeAhPPEZ555pnZ9/GCmJ/85CfZ3x9++OF02GGHtUTPOeec9K1vfWuMcATMe++9N/vsyCOPzMLmXnvtVdO7oFkECBAgQIAAAQIEJreAQFjT+1tlILzsssvSZz/72ZZMPPc3f/781u8f+9jHsucKo8Ry0Vg2GuXWW28d8zzhxRdfnD1DWCzvfOc706pVq1of/fOf/0wvfelLa3oXNIsAAQIECBAgQIDA5BYQCGt6f/sJhL/+9a/TvHnz+u7B448/3nqeb7yTHnvssezZvtg6IkrMEl599dXZ20Ej9L3jHe/IPv/EJz6RzQDmW0hcd911rXAY319++eXpvPPOG1PV6aefnq6//vrWZ3/6059SLDNVCBAgQIAAAQIECBAoX0AgLN+8rxr7CYS/+93v0sc//vG+rhcHxX6CBxxwQF/HR9iM2bynn366dfwb3/jG9Mc//jEddNBB2bN/MTP4vOc9r/V9hMNzzz239Xu8YCZCY7EUZxfj86gn9jVUCBAgQIAAAQIECBAoX0AgLN+8rxr7CYR9XWgCB/31r3/N9iLMt5DILxXPDX71q19NM2bMGHP19qWmMav40Y9+dMwx8QbSCIp5+fnPf96acZxAU51KgAABAgQIECBAgMAAAgLhAGhlnFJ1IHzmmWey4PaVr3yltTl9sd+xHcU3vvGNLPDlL4XpJxB+8pOfTN/5zndal7rpppvSSSedVAapOggQIECAAAECBAgQaBMQCGs6JKoMhLHvYCwHzV/+EnsOxrN/V155Zfra1742RixmCj/zmc9kn8X3seF8XjotGY0A+b3vfa91TGxLEdtTKAQIECBAgAABAgQIlC8gEJZvPm6N8UxdlK1bt6b7778/xV593cooniHctWtXtkz0hz/8YVZt7DcYf89nAdesWZM+8IEPpEcffbTVrPzFMHHcokWLWp93eqlMXC/2McyLzelrNgA1hwABAgQIECBAoFECAmENbncsy4yZsjwMRpMidMWbPscLhKN4y2i8NCY2m89Lp5e+3Hjjjend735365iYNfz0pz+dfvWrX6W3v/3trc8vuuii9IUvfGGM8Mknn5ziucG8xB6HL3nJS2pwFzSBAAECBAgQIECAQPMEBMIK73mEraVLl44JgsXmHH/88dmbQcsssSF9bEyflw0bNqRDDjlkTBN27NiRpk2b1noD6dlnn50tF924cWM69NBDW8fmnxdPnjlzZlq7dm32UWw3EbOLCgECBAgQIECAAAEC1QgIhNW4Z7XmyzC7NSG2ffjZz35WagtXrlyZTj311FadDzzwQHr1q189pg3//e9/0/7775+2bduWfR6zmLENRZQ3v/nN6a677sr+Hs8GxsxnXrZv357taZiXL37xi+nCCy8stX8qI0CAAAECBAgQIEDg/wUEwopGQywTjdnB8cptt92W5s6dW2oL//a3v6XDDz+8VWfMGMby1WKJGb6Y6ctLLCE95ZRTsl+vueaaFHsN5uXxxx9PBx54YPbr7bffPmbPwfvuuy8dccQRpfZPZQQIECBAgAABAgQICISVj4Fes4MRBCMQVlHiTaGxBDTKUUcdlT3z94pXvCL7/d///ndavHhxiqAY5dhjj0233npr2meffbLfYxZw3rx5rVnCmAWM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\",\"fileType\":\"png\",\"fileName\":\"\"}"if (StringUtils.isStrNotBlank(param)) {const h5CallBackBean: H5CallBackBean | null = JSONUtil.jsonToBean<H5CallBackBean>(H5CallBackBean, param)
//保存图片let context = getContext(this);let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);const fileBase64 = h5CallBackBean.dataBase64if (StringUtils.isStrNotBlank(fileBase64)) {const base64: string = fileBase64.split(",")[1]let applicationContext = getContext().getApplicationContext()const numTemp: number = DateUtil.getTodayTime()let filePath = applicationContext.filesDir + '/' + numTemp + "." + h5CallBackBean.fileTypeif (UiUtils.saveBase64File(base64, filePath)) {try {// 获取需要保存到媒体库的位于应用沙箱的图片/视频urilet srcFileUris: Array<string> = [fileUri.getUriFromPath(filePath)];let photoCreationConfigs: Array<photoAccessHelper.PhotoCreationConfig> = [{fileNameExtension: 'jpg',photoType: photoAccessHelper.PhotoType.IMAGE,subtype: photoAccessHelper.PhotoSubtype.DEFAULT, // 可选}];let desFileUris: Array<string> =await phAccessHelper.showAssetsCreationDialog(srcFileUris, photoCreationConfigs);console.info('showAssetsCreationDialog success, data is ' + desFileUris);if (desFileUris.length > 0) {FileUtil.copyFileSync(filePath,new fileUri.FileUri(desFileUris[0]).path)try {console.log(`context.fileDir ===> ${context.filesDir}`)let srcFile: fs.File = fs.openSync(fileUri.getUriFromPath(filePath), fs.OpenMode.READ_ONLY);let targetFile: fs.File = await fs.open(desFileUris[0], fs.OpenMode.READ_WRITE);let bufSize = 14096;let readSize = 0;let buf = new ArrayBuffer(bufSize);let readOptions: ReadOptions = { offset: readSize, length: bufSize };let readLen = fs.readSync(srcFile.fd, buf, readOptions);while (readLen > 0) {readSize += readLen;fs.writeSync(targetFile.fd, buf, { length: readLen });readOptions.offset = readSize;readLen = fs.readSync(srcFile.fd, buf, readOptions);}fs.closeSync(srcFile);fs.closeSync(targetFile);ToastUtil.showToast("保存成功")if (FileUtil.accessSync(filePath)) {FileUtil.unlink(filePath)}} catch (error) {console.error(`createAssetByIo :: error , msg is ${error} `);}} else {ToastUtil.showToast("您拒绝了保存图片")}} catch (err) {console.error('showAssetsCreationDialog failed, errCode is ' + err.code + ', errMsg is ' + err.message);}} else {ToastUtil.showToast("保存失败,请稍后重试")}}}}

其中用到的第三方依赖和上篇文章一致

参考:HarmonyNext保存Base64文件到Download下-CSDN博客

效果如下

【其它问题】
关于授权窗,没显示图片缩略图的问题,官方给的答复是下载最新版本的IDE

相关文章:

【HarmonyOS NEXT】实现保存base64图片到图库

上篇文章介绍了HarmonyOS NEXT如何保存base64文件到download目录下&#xff0c;本次介绍如何保存base64图片到图库&#xff0c;网络图片保存方式大同小异&#xff0c;先下载图片&#xff0c;然后再保存 phAccessHelper.showAssetsCreationDialog参考官方文档’ ohos.file.pho…...

开题答辩最怕被问什么?教你用ChatGPT轻松准备,稳拿高分!

AIPaperGPT&#xff0c;论文写作神器~ https://www.aipapergpt.com/ 开题答辩是学位论文写作过程中的重要环节&#xff0c;能帮助导师评估你的研究计划是否可行&#xff0c;并对后续写作起到指导作用。很多同学在面对导师提问时会感到紧张&#xff0c;因此提前准备好常见问题的…...

Unity3D功耗和发热分析与优化详解

前言 Unity3D作为广泛使用的游戏开发引擎&#xff0c;在游戏开发过程中&#xff0c;功耗和发热问题一直是开发者需要重点关注的问题。功耗和发热不仅影响用户体验&#xff0c;还可能对设备的硬件寿命造成一定影响。本文将从技术角度详细分析Unity3D游戏在移动设备上的功耗和发…...

深度学习中的掩码介绍

在深度学习中,**掩码(Mask)**通常用于屏蔽掉某些特定部分的数据,以确保模型在训练或推理时不处理无效或无关的输入。掩码的使用场景主要包括处理变长序列、生成模型中的自回归任务、处理填充数据等。掩码可以是二值矩阵(1 表示有效数据,0 表示屏蔽数据),在注意力机制中…...

rust高级进阶总结

文章目录 前言1. Rust生命周期进阶一、不太聪明的生命周期检查&#xff08;一&#xff09;例子1&#xff08;二&#xff09;例子2 二、无界生命周期三、生命周期约束&#xff08;HRTB&#xff09;&#xff08;一&#xff09;语法及含义&#xff08;二&#xff09;综合例子 四、…...

整理—计算机网络

目录 网络OSI模型和TCP/IP模型 应用层有哪些协议 HTTP报文有哪些部分 HTTP常用的状态码 Http 502和 504 的区别 HTTP层请求的类型有哪些&#xff1f; GET和POST的使用场景&#xff0c;有哪些区别&#xff1f; HTTP的长连接 HTTP默认的端口是什么&#xff1f; HTTP1.1怎…...

分布式数据库环境(HBase分布式数据库)的搭建与配置

分布式数据库环境&#xff08;HBase分布式数据库&#xff09;的搭建与配置 1. VMWare安装CentOS7.9.20091.1 下载 CentOS7.9.2009 映像文件1.2启动 VMware WorkstationPro&#xff0c;点击“创建新的虚拟机”1.3在新建虚拟机向导界面选择“典型&#xff08;推荐&#xff09;”1…...

100个JavaWeb(JDBC, Servlet, JSP)毕业设计选题

100个JavaWeb(JDBC, Servlet, JSP)毕业设计选题 教育行业 学生信息管理系统在线考试系统课程管理与选课系统教师评价管理系统图书馆管理系统学生成绩查询系统校园论坛作业提交与批改系统学生考勤管理系统教学资源共享平台 企业管理 员工管理系统考勤打卡系统办公用品申请管…...

05 go语言(golang) - 常量和条件语句

常量 在Go语言中&#xff0c;常量是使用 const 关键字定义的&#xff0c;并且一旦被赋值后&#xff0c;它们的值在程序运行期间不能改变。常量可以是字符、字符串、布尔或数值类型。 基本特性 不可修改&#xff1a;一旦一个常量被定义&#xff0c;它的值就不能被更新。编译时…...

【设计模式】深入理解Python中的适配器模式(Adapter Pattern)

深入理解Python中的适配器模式&#xff08;Adapter Pattern&#xff09; 在软件开发中&#xff0c;常常会遇到需要让不兼容的类或接口协同工作的问题。适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;通过提供一个包装器对象&#xff0c;…...

RuoYi-Vue若依框架-后端设置不登陆访问(白名单)

找到SecurityConfig类 确认自己的需求 /*** anyRequest | 匹配所有请求路径* access | SpringEl表达式结果为true时可以访问* anonymous | 匿名可以访问* denyAll | 用户不能访问* fullyAuthenticated | 用户完全认证可…...

C语言初阶小练习2(三子棋小游戏的实现代码)

这是C语言小游戏三子棋的代码实现 test.c文件是用来测试的部分 game.h文件是用来声明我们说写出的函数 game.c文件是用来编写我们的功能实现函数部分 1.test.c #define _CRT_SECURE_NO_WARNINGS 1 #include"game.h" void menu() {printf("***************…...

金融行业合同管理如何利用AI技术进行风险预警?

2024年以来&#xff0c;金融行业的发展主线被锚定&#xff0c;强调了防风险的基调&#xff0c;尤其是系统性风险的防范。金融工作的重点在于实现六个强大&#xff1a;强大的货币、强大的中央银行、强大的金融机构、强大的国际金融中心、强大的金融监管、强大的金融人才队伍。这…...

世界数字农业盛宴与技术探索,25年3月聚焦世界灌溉科技大会

由中国农业节水和农村供水技术协会、中国农垦节水农业产业技术联盟、北京物联网智能技术应用协会、振威国际会展集团主办的“世界灌溉科技大会”、“第11届北京国际数字农业与灌溉技术博览会”&#xff0c;定于2025年3月31日至4月2日在北京国家会议中心举办。 作为世界三大灌溉…...

二百六十九、Kettle——ClickHouse清洗ODS层原始数据增量导入到DWD层表中

一、目的 清洗ClickHouse的ODS层原始数据&#xff0c;增量导入到DWD层表中 二、实施步骤 2.1 newtime select( select create_time from hurys_jw.dwd_statistics order by create_time desc limit 1) as create_time 2.2 替换NULL值 2.3 clickhouse输入 2.4 字段选择 2.5 …...

Maya---骨骼绑定

调节骨骼大小 回车键确认骨骼 FK子集跟父集走 IK子集不跟父集走 前视图中按shift键添加骨骼 清零、删除历史记录&#xff0c;创建新的物体...

携手并进,智驭教育!和鲸科技与智谱 AI 签署“101 数智领航计划”战略合作协议

近日&#xff0c;上海和今信息科技有限公司&#xff08;以下简称“和鲸科技”&#xff09;与北京智谱华章科技有限公司&#xff08;以下简称“智谱 AI”&#xff09;签署“101 数智领航计划”战略合作协议。双方将携手营造智能化学科教育与科研环境&#xff0c;提供多种大模型工…...

牛客周赛63

https://ac.nowcoder.com/acm/contest/91592 好数 简单的判断两位数&#xff0c;且十位等于个位 #include <bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define int long long using namespace std; using ll long long; using pii …...

git restore恢复删除文件

新版本 在 Git 2.23 版本之后&#xff0c;Git 引入了一个新的命令 git restore&#xff0c;用于简化文件恢复操作。可以用 git restore 来恢复误删除的文件。下面是详细的使用方法&#xff1a; 1. 恢复工作区中删除的文件&#xff08;未提交&#xff09; 如果文件已被删除&a…...

MacOS13虚拟机VMware Workstation Pro 16安装

资源 安装unlocker 安装虚拟机 低版本的还没有MacOS13选项&#xff0c;这也是我安装低版本虚拟机踩过的坑 找个教程安装就可以了 省略…自己去找找教程… 过程中我使用桥接是不行的&#xff0c;没有网络&#xff0c;后面重新下一步一步的选择默认的网络重装后就好了&am…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...