Flutter GPUImage 在鸿蒙平台的使用指南
flutter_gpu_image是一款支持鸿蒙平台的Flutter图像处理插件,提供GPU加速的滤镜效果和相机功能。主要特点包括多种图像滤镜(亮度、对比度等)、实时相机预览和简洁的API设计。安装需通过Git引入依赖并配置相机权限。核心功能示例包括:1)图像显示与滤镜应用,通过控制器设置滤镜参数并保存处理结果;2)相机预览与拍照,支持前后摄像头切换和照片/视频录制。该插件为鸿蒙设备提供了高性能的
·
一、插件介绍
flutter_gpu_image是一款基于GPU加速的图像处理Flutter插件,支持多种图像滤镜效果和相机功能。该插件已针对鸿蒙平台进行适配,允许开发者在鸿蒙设备上实现高性能的图像编辑和相机应用。
主要功能特点
- 提供丰富的图像滤镜效果(亮度、对比度、饱和度、色调等)
- 支持实时相机预览与滤镜应用
- 支持图像和视频的处理与显示
- GPU加速确保高性能图像处理
- 简洁易用的API设计
- 完整的鸿蒙平台适配
二、安装与使用
2.1 包的引入
由于这是自定义修改版本,需要通过Git形式引入。在项目的pubspec.yaml文件中添加以下依赖配置:
dependencies:
gpu_image:
git:
url: https://gitcode.com/openharmony-sig/flutter_gpu_image.git
添加依赖后,执行以下命令获取包:
flutter pub get
2.2 权限配置
使用相机功能时,需要在鸿蒙项目的配置文件中添加相应权限:
{
"module": {
"abilities": [
{
"permissions": [
"ohos.permission.CAMERA",
"ohos.permission.MEDIA_LOCATION",
"ohos.permission.READ_MEDIA",
"ohos.permission.WRITE_MEDIA"
]
}
]
}
}
2.3 核心API使用示例
2.3.1 图像显示与滤镜应用
import 'package:gpu_image/gpu_image.dart';
class ImageFilterPage extends StatefulWidget {
final String imagePath;
const ImageFilterPage({Key? key, required this.imagePath}) : super(key: key);
_ImageFilterPageState createState() => _ImageFilterPageState();
}
class _ImageFilterPageState extends State<ImageFilterPage> {
final GPUImageController _controller = GPUImageController();
void initState() {
super.initState();
// 设置保存监听
_controller.saveListen((path) {
print("图片保存路径: $path");
// 处理保存结果
});
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("图像滤镜")),
body: Column(
children: [
// 显示带滤镜的图像
GPUImageWidget(
width: MediaQuery.of(context).size.width,
height: 300,
path: widget.imagePath,
controller: _controller,
),
// 滤镜控制按钮
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () {
// 应用亮度滤镜
_controller.setFilter(GPUBrightnessFilter(brightness: 1.5));
},
child: Text("增加亮度"),
),
ElevatedButton(
onPressed: () {
// 应用对比度滤镜
_controller.setFilter(GPUContrastFilter(contrast: 1.5));
},
child: Text("增加对比度"),
),
ElevatedButton(
onPressed: () {
// 保存处理后的图像
_controller.saveImage();
},
child: Text("保存图片"),
),
],
),
],
),
);
}
}
2.3.2 相机预览与拍照
import 'package:gpu_image/gpu_image.dart';
class CameraFilterPage extends StatefulWidget {
const CameraFilterPage({Key? key}) : super(key: key);
_CameraFilterPageState createState() => _CameraFilterPageState();
}
class _CameraFilterPageState extends State<CameraFilterPage> {
final GPUCameraController _controller = GPUCameraController();
void initState() {
super.initState();
// 设置拍照监听
_controller.photoListen((path) {
print("拍照保存路径: $path");
// 跳转到图片预览页面
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ImagePreviewPage(imagePath: path),
),
);
});
// 设置视频录制监听
_controller.videoListen((recordStatus, path) {
if (recordStatus == GPUType.startRecord) {
print("开始录制视频");
} else {
print("视频录制结束,保存路径: $path");
// 跳转到视频预览页面
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => VideoPreviewPage(videoPath: path),
),
);
}
});
}
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
alignment: Alignment.bottomCenter,
children: [
// 相机预览
GPUCameraWidget(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
controller: _controller,
),
// 相机控制按钮
Positioned(
bottom: 50,
left: 30,
right: 30,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
// 切换相机按钮
IconButton(
onPressed: () {
_controller.switchCamera();
},
icon: Icon(Icons.switch_camera, color: Colors.white, size: 30),
),
// 拍照按钮
GestureDetector(
onTap: () {
_controller.recordPhoto();
},
child: Container(
width: 70,
height: 70,
decoration: BoxDecoration(
color: Colors.white,
shape: BoxShape.circle,
),
),
),
// 应用滤镜按钮
IconButton(
onPressed: () {
_controller.setFilter(GPUSepiaFilter());
},
icon: Icon(Icons.filter, color: Colors.white, size: 30),
),
],
),
),
],
),
);
}
}
三、主要API说明
3.1 滤镜类
所有滤镜都继承自GPUFilter基类,主要包括:
GPUBrightnessFilter:亮度调整GPUContrastFilter:对比度调整GPUSaturationFilter:饱和度调整GPUHueFilter:色调调整GPUSepiaFilter:褐色调效果GPUSharpenFilter:锐化效果GPUPixelationFilter:像素化效果GPUGammaFilter:伽马调整
3.2 控制器类
GPUImageController
setFilter(GPUFilter filter):设置图像滤镜saveImage():保存处理后的图像saveListen(dynamic saveImage):监听图像保存结果
GPUCameraController
switchCamera():切换前后摄像头recordPhoto():拍照recordVideo():录制视频setFilter(GPUFilter filter):设置相机预览滤镜photoListen(RecordPhoto recordPhoto):监听拍照结果videoListen(RecordVideo recordVideo):监听视频录制结果closeCamera():关闭相机
3.3 显示组件
GPUImageWidget:显示静态图像并应用滤镜GPUCameraWidget:相机预览组件GPUVideoWidget:视频播放组件
四、兼容性与限制
4.1 兼容性
已在以下环境中测试通过:
- Flutter: 3.7.12-ohos-1.0.6
- SDK: 5.0.0(12)
- IDE: DevEco Studio: 5.0.13.200
- ROM: 5.1.0.120 SP3
4.2 注意事项
- 使用相机功能前,请确保已获得相应权限
- 图像处理过程会消耗较多GPU资源,建议在高性能设备上使用复杂滤镜
- 视频处理功能可能受到设备性能限制
- 保存图像和视频时,需要外部存储权限
五、总结
flutter_gpu_image插件为鸿蒙平台提供了强大的GPU加速图像处理能力,使开发者能够轻松构建具有专业图像编辑功能的应用。其主要优势包括:
- 丰富的滤镜效果和相机功能
- 针对鸿蒙平台的完整适配
- 高性能的GPU加速处理
- 简洁易用的API设计
- 支持图像、相机和视频的全面处理
通过本指南的介绍,开发者可以快速上手使用该插件,在鸿蒙平台上实现各种图像处理和相机应用。无论是简单的图像编辑还是复杂的相机应用,flutter_gpu_image都能提供高效、稳定的支持。
更多推荐



所有评论(0)