news 2025/12/27 21:36:37

《第13讲:调用摄像头与相册:图像采集与展示》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《第13讲:调用摄像头与相册:图像采集与展示》

第13篇:调用摄像头与相册:图像采集与展示

# Flutter × 鸿蒙实战30讲(13):调用摄像头与相册:图像采集与展示 > 作者:烟云任平生 > 发布时间:2025年12月13日 > 标签:`#Flutter` `#OpenHarmony` `#摄像头` `#相册` `#CSDN` --- ### 一、目标 让 Flutter 应用具备 **拍照** 和 **选择相册图片** 能力,并将结果回传至 Flutter 显示。 --- ### 二、权限配置 ```json { "requestPermissions": [ { "name": "ohos.permission.CAMERA" }, { "name": "ohos.permission.READ_IMAGEVIDEO" }, { "name": "ohos.permission.WRITE_IMAGEVIDEO" } ] } 三、ArkTS 实现图像选择 // imagePicker.ts import picker from '@ohos.multimedia.photoAccessHelper'; import abilityAccessCtrl from '@ohos.abilityAccessCtrl'; export class ImagePicker { private static context = getContext(); static async pickImage(): Promise<string> { const atManager = abilityAccessCtrl.createAtManager(); try { await atManager.requestPermissionsFromUser(this.context, [ 'ohos.permission.READ_IMAGEVIDEO' ]); } catch { throw new Error('Permission denied'); } // OpenHarmony 暂无官方图像选择器,此处模拟返回本地路径 // 实际可结合 FilePicker 或自定义 UI return 'file://data/storage/el2/base/haps/entry/files/sample.jpg'; } } ⚠️ 注:OpenHarmony 标准系统暂未提供 photoPicker,需自行实现文件选择界面或使用社区方案。 四、简化方案:预存测试图 为快速验证,可将测试图放入 rawfile/test.jpg,并通过以下方式返回 base64: // 将 rawfile 图片转为 base64(仅用于演示) const buffer = getContext().resourceManager.getRawFileContentSync('test.jpg'); const base64 = util.Base64.encodeToString(buffer); return 'data:image/jpeg;base64,' + base64; 五、Flutter 侧接收并显示 Future<void> selectImage() async { final bridge = html.window['ImageAPI']; final imageUrl = await bridge.callMethod('pickImage'); if (imageUrl is String) { setState(() { _imagePath = imageUrl; // 可直接用于 Image.network }); } } Widget build(BuildContext context) { return Column( children: [ if (_imagePath != null) Image.network(_imagePath!), ElevatedButton(onPressed: selectImage, child: Text('选择图片')) ], ); } 六、未来展望 待 OpenHarmony 官方提供 PhotoPicker 后,可无缝替换底层实现,Flutter 代码无需改动。 🔜 下一篇预告:《第14讲:位置服务集成:获取 GPS 坐标》 💬 你在鸿蒙上实现过图像选择吗?欢迎分享经验
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/23 6:15:01

终极指南:快速掌握eventpp事件处理库的8种集成方法

终极指南&#xff1a;快速掌握eventpp事件处理库的8种集成方法 【免费下载链接】eventpp eventpp - 一个为C提供的事件分派器和回调列表库。 项目地址: https://gitcode.com/gh_mirrors/ev/eventpp eventpp是一个功能强大的C事件分派器和回调列表库&#xff0c;作为纯头…

作者头像 李华
网站建设 2025/12/27 16:15:08

光刻胶用二正丁基胺增感剂:

1 二正丁基胺的基本特性与重要性二正丁基胺&#xff08;Di-n-butylamine, DBA&#xff09;是一种有机胺化合物&#xff0c;它在光刻胶中作为光增感剂&#xff08;Photosensitizer&#xff09;使用&#xff0c;能够显著提升光刻胶的感光度和分辨率。其分子式为C₈H₁₉N&#xf…

作者头像 李华
网站建设 2025/12/27 7:37:18

Spyder vs Jupyter:科学计算效率大比拼

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个性能对比测试项目&#xff0c;比较Spyder和Jupyter Notebook在处理大型数据集时的效率。测试内容包括&#xff1a;1. 数据加载速度&#xff1b;2. 内存占用&#xff1b;3. …

作者头像 李华
网站建设 2025/12/23 23:33:04

【第八天】08c#今日小结

1.字符串创建using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace _02字符串创建 {internal class Program{static void Main(string[] args){//对象类型: 可以通过class 创建一个对象类型People …

作者头像 李华
网站建设 2025/12/27 7:32:45

Windows临时文件夹清理指南:释放C盘空间

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个Windows系统优化工具&#xff0c;主要功能包括&#xff1a;1) 扫描C:\Users\[用户名]\AppData\Local\Temp目录下的临时文件 2) 按文件类型、大小和最后访问时间分类显示 3)…

作者头像 李华
网站建设 2025/12/23 21:03:06

AI助力:用自然语言生成复杂tar命令,告别记忆负担

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个AI辅助的tar命令生成工具&#xff0c;用户可以通过自然语言描述压缩/解压需求&#xff08;例如将/home/user/docs目录递归压缩为docs_backup.tar.gz&#xff0c;并显示进度…

作者头像 李华