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 兼容性

已在以下环境测试通过:

  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;
  2. 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. 参考资料

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐