news 2026/6/27 1:54:20

《第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/6/23 16:09:05

Spyder与AI结合:智能数据分析新体验

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个Spyder插件&#xff0c;集成AI模型&#xff08;如Kimi-K2或DeepSeek&#xff09;&#xff0c;用于自动化数据分析和可视化。插件应支持以下功能&#xff1a;1. 自动识别数据…

作者头像 李华
网站建设 2026/6/24 23:58:24

30分钟构建Anthropic连接测试工具原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 快速开发一个Anthropic服务连接测试工具原型&#xff0c;功能包括&#xff1a;1. 简单的API端点输入界面&#xff1b;2. API密钥配置&#xff1b;3. 一键测试连接功能&#xff1b;4…

作者头像 李华
网站建设 2026/6/25 16:32:27

SVN小乌龟高效使用:10个让你节省1小时/天的技巧

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个SVN小乌龟效率工具包&#xff0c;包含&#xff1a;1. 自定义快捷键配置模板&#xff1b;2. 批量操作脚本&#xff08;批量更新、提交等&#xff09;&#xff1b;3. 状态图标…

作者头像 李华
网站建设 2026/6/26 2:07:04

开发者必知:Temp文件夹在软件开发中的妙用

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 设计一个开发辅助工具&#xff0c;功能&#xff1a;1) 在Temp目录自动创建规范化临时文件夹结构 2) 提供API管理临时文件生命周期 3) 支持自动清理过期文件 4) 集成到Visual Studio…

作者头像 李华
网站建设 2026/6/25 10:29:03

零基础入门:Linux Docker第一课

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请创建一个面向初学者的Linux Docker学习项目&#xff0c;包含&#xff1a;1. Docker安装脚本&#xff08;Ubuntu/CentOS&#xff09;2. 5个循序渐进的示例&#xff1a;从hello-wor…

作者头像 李华
网站建设 2026/6/25 2:37:28

1小时验证创意:用快马快速搭建CI/CD原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 构建一个CI/CD原型验证平台&#xff0c;能够&#xff1a;1. 通过拖拽方式设计部署流程 2. 实时生成对应配置代码 3. 模拟完整部署过程 4. 识别潜在问题并提供优化建议 5. 支持多方案…

作者头像 李华