Camerawesome_ohos 鸿蒙使用指南
Camerawesome_ohos是为鸿蒙平台开发的Flutter相机插件,基于开源项目camerawesome定制。该插件提供相机预览、拍照、视频录制、图像分析、滤镜效果和传感器切换等功能,支持多种预览尺寸和物理按键操作。开发者可通过Git方式引入依赖,并利用简洁API快速集成相机功能。插件包含30余种滤镜效果和多种闪光模式,支持自定义UI和实时图像分析,但存在图像解析和滤镜色差等已知问题。已在
·
1. 插件介绍
Camerawesome_ohos 是一个基于开源项目 camerawesome 开发的鸿蒙平台相机插件,为 Flutter 开发者提供了强大而易用的相机功能。
主要功能
- 相机预览:支持多种预览尺寸和预览模式
- 拍照功能:支持自动对焦、闪光灯控制、缩放调节
- 视频录制:支持录制视频、暂停/继续录制
- 图像分析:支持实时图像分析流
- 滤镜效果:内置多种滤镜效果,可实时预览
- 传感器切换:支持前后摄像头切换
- 物理按键支持:支持物理快门按键
2. 安装与配置
由于这是一个自定义修改版本,需要以 Git 形式引入。
2.1 添加依赖
在项目的 pubspec.yaml 文件中添加以下依赖:
dependencies:
camerawesome_ohos:
git:
url: https://gitcode.com/openharmony-sig/fluttertpc_camerawesome.git
path: ohos
2.2 安装依赖
执行以下命令安装依赖:
flutter pub get
3. API 介绍
3.1 核心 API
CamerawesomePlugin
| 方法名 | 描述 | 支持情况 |
|---|---|---|
| start | 启动相机 | yes |
| stop | 停止相机 | yes |
| takePhoto | 拍照 | yes |
| recordVideo | 录制视频 | yes |
| setFlashMode | 设置闪光灯模式 | yes |
| setZoom | 设置缩放级别 | yes |
| setSensor | 切换摄像头 | yes |
| setCaptureMode | 切换拍照/视频模式 | yes |
| setFilter | 设置滤镜 | yes |
| checkAndRequestPermissions | 检查并请求权限 | yes |
CameraContext
| 方法名 | 描述 | 支持情况 |
|---|---|---|
| state$ | 相机状态流 | yes |
| captureState$ | 媒体捕获状态流 | yes |
| sensorConfig$ | 传感器配置流 | yes |
| create | 创建相机上下文 | yes |
| setFilter | 设置滤镜 | yes |
| setSensorConfig | 设置传感器配置 | yes |
| focusOnPoint | 对特定点对焦 | yes |
3.2 主要属性
滤镜类型
支持以下滤镜效果:
- None (原始)
- AddictiveBlue
- AddictiveRed
- Aden
- Amaro
- Ashby
- Brannan
- Brooklyn
- Clarendon
- Crema
- Dogpatch
- Gingham
- Ginza
- Hefe
- Hudson
- Inkwell
- Juno
- Lark
- LoFi
- Ludwig
- Moon
- Perpetua
- Reyes
- Sierra
- Slumber
- Stinson
- Sutro
- Walden
- Willow
- XProII
闪光灯模式
- off
- on
- auto
- torch
4. 使用示例
4.1 基本用法
以下是一个简单的相机应用示例:
import 'package:open_file_ohos/open_file_ohos.dart';
import 'package:camera_app/utils/file_utils.dart';
import 'package:camerawesome_ohos/camerawesome_plugin.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const CameraAwesomeApp());
}
class CameraAwesomeApp extends StatelessWidget {
const CameraAwesomeApp({super.key});
Widget build(BuildContext context) {
return const MaterialApp(
title: 'camerAwesome',
home: CameraPage(),
);
}
}
class CameraPage extends StatelessWidget {
const CameraPage({super.key});
Widget build(BuildContext context) {
return Scaffold(
body: Container(
color: Colors.white,
child: CameraAwesomeBuilder.awesome(
saveConfig: SaveConfig.photoAndVideo(
photoPathBuilder: () => path(CaptureMode.photo),
videoPathBuilder: () => path(CaptureMode.video),
initialCaptureMode: CaptureMode.photo,
),
enablePhysicalButton: true,
filter: AwesomeFilter.None,
flashMode: FlashMode.auto,
aspectRatio: CameraAspectRatios.ratio_16_9,
previewFit: CameraPreviewFit.fitWidth,
mirrorFrontCamera: true,
previewAlignment: Alignment.bottomLeft,
onMediaTap: (mediaCapture) {
OpenFile.open(mediaCapture.filePath);
},
),
),
);
}
}
4.2 自定义 UI
如果需要自定义相机 UI,可以使用 CameraAwesomeBuilder.custom:
CameraAwesomeBuilder.custom(
saveConfig: SaveConfig.photoAndVideo(
photoPathBuilder: () => path(CaptureMode.photo),
videoPathBuilder: () => path(CaptureMode.video),
),
builder: (cameraState, previewSize, previewRect) {
return YourCustomCameraWidget(
cameraState: cameraState,
previewSize: previewSize,
);
},
)
4.3 图像分析
可以使用图像分析功能进行实时图像处理:
CameraAwesomeBuilder.awesome(
saveConfig: SaveConfig.photoAndVideo(...),
onImageForAnalysis: (image) {
// 处理分析图像
// image.format
// image.bytes
// image.width
// image.height
},
analysisConfig: AnalysisConfig(
outputFormat: InputAnalysisImageFormat.nv21,
width: 1280,
height: 720,
),
)
5. 约束与限制
5.1 兼容性
已在以下环境测试通过:
- Flutter: 3.7.12-ohos-1.1.3; SDK: 5.0.0(12); IDE: DevEco Studio: 5.1.0.828; ROM: 5.1.0.130 SP8;
- Flutter: 3.22.1-ohos-1.0.3; SDK: 5.0.0(12); IDE: DevEco Studio: 5.1.0.828; ROM: 5.1.0.130 SP8;
5.2 已知问题
- 图像分析流返回后无法解析
- 滤镜存在色差
6. 总结
Camerawesome_ohos 是一个功能强大的鸿蒙平台相机插件,提供了丰富的相机功能和灵活的 API。它支持拍照、视频录制、图像分析和滤镜效果等核心功能,且易于集成和使用。
通过使用 Camerawesome_ohos,开发者可以快速构建出具有专业相机功能的 Flutter 应用,为用户提供出色的拍摄体验。
7. 参考资料
更多推荐




所有评论(0)