news 2026/7/9 17:11:14

《第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进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/8 16:09:15

GRASP 10.1.3.0天线仿真软件权威学习指南

软件核心价值与技术定位 【免费下载链接】GRASP101.3.0培训教程公开.pdf分享 本仓库提供了一份极为珍贵的学习资源——GRASP10[1].3.0培训教程。GRASP是一款在天线设计和电磁仿真领域内广泛使用的高级软件工具&#xff0c;它凭借其强大的功能和灵活性&#xff0c;成为了专业工程…

作者头像 李华
网站建设 2026/7/9 15:35:50

3分钟搞定:批量部署Visual C++ 2015运行库的技巧

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个企业级批量部署工具&#xff0c;用于在域环境中快速安装Visual C 2015 Redistributable。功能要求&#xff1a;1) 支持AD域组策略推送&#xff1b;2) 提供静默安装参数配置…

作者头像 李华
网站建设 2026/7/10 7:54:32

让RAG像人类一样“扫视全文”:上下文检索技术详解

尽管大语言模型本身的能力在快速演进&#xff0c;但它依然无法凭空获取训练数据之外最新或专有知识。 检索增强生成&#xff08;RAG, Retrieval-Augmented Generation&#xff09; 正是为解决这一问题而生&#xff1a; 在回答问题前&#xff0c;先从知识库中检索相关资料&…

作者头像 李华
网站建设 2026/7/10 11:59:06

Vue新手必看:vue.config.js最简配置指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请生成一个最简单的vue.config.js教学示例&#xff0c;包含新手最需要的5个基础配置&#xff1a;1. publicPath基础路径 2. outputDir输出目录 3. devServer.proxy基础代理 4. 关闭…

作者头像 李华