本项目为 HarmonyOS 提供了一个强大的相机捕获和图像处理库,其设计和功能灵感源自 GPUImage。底层采用 C++ 封装 HarmonyOS NDK 的 Camera 接口 (libohcamera.so) 并结合 OpenGL/EGL 技术,实现了高性能的相机预览、拍照、录像以及硬件加速的实时图像滤镜处理。
- 相机生命周期管理: 快速初始化、配置参数以及释放相机资源 (
initCamera,releaseCamera)。 - 照片捕获: 支持直接捕获高质量图像到内存 Buffer 或直接保存为文件 (
capturePhotoToBuffer,takePicture)。 - 视频录制: 支持高性能的 Native 数据流视频录制,可自定义录制尺寸及帧率 (
startNativeRecord,stopNativeRecord)。 - 实时滤镜: 基于 OpenGL 提供硬件加速的实时图像滤镜,可直接作用于相机预览及视频录制画面 (
setFilter)。 - 高级相机控制: 全面支持对焦、曝光调节、变焦配置、闪光灯以及视频防抖等高级操作功能。
gpuimagelib: 核心的 HarmonyOS 动态库模块,提供CameraController上层调用接口。src/main/ets: ArkTS/ETS 层接口封装,提供给此工程及外部 HarmonyOS 应用便捷调用的 API。src/main/cpp: C++ Native 层核心实现,负责调用 Camera NDK、OpenGL 数据流渲染以及底层的数据转换与回调。
entry: 示例应用模块,展示了gpuimagelib的实际使用场景,包含前后置画面切换、对焦测光交互、滤镜动态应用和音视频录制的完整测试集与 UI。
目前 gpuimagelib 实现了多达 50 余种丰富的图像处理滤镜与特效,包括但不限于:
- 基础颜色与光影调整:亮度 (Brightness)、对比度 (Contrast)、饱和度 (Saturation)、色调 (Hue)、曝光度 (Exposure)、伽马值 (Gamma)、白平衡 (WhiteBalance)、自然饱和度 (Vibrance)、RGB 通道调节、不透明度 (Opacity)、明度调整等。
- 图像风格化与特效:灰度去色 (Grayscale)、复古老照片 (Sepia)、色彩反转 (Invert)、素描效果 (Sketch)、卡通效果 (Toon / SmoothToon)、海报化 (Posterize)、曝光过度 (Solarize)、黑白化 (Monochrome)、伪色彩 (FalseColor)、桑原滤波艺术效果 (Kuwahara)、晕影边缘压暗 (Vignette)、去雾/雾化 (Haze) 等。
- 模糊、锐化与形变:高斯模糊 (GaussianBlur)、图像锐化 (Sharpen)、马赛克像素化 (Pixelation)、漩涡扭曲 (Swirl)、凸起形变 (BulgeDistortion)。
- 图像混合模式 (Blend Filters):支持高达 20 余种双图层/纹理混合模式,例如正片叠底 (Multiply)、叠加 (Overlay)、柔光/强光 (SoftLight / HardLight)、颜色加深/减淡 (ColorBurn / ColorDodge)、变暗/变亮 (Darken / Lighten)、差值/排除 (Difference / Exclusion)、色相/饱和度混合 (Hue / Saturation Blend) 等,可用于实现复杂的图像合成。
(具体滤镜分类与类型枚举索引,请参考示例代码 FilterSelector.ets 模块并配合 setFilter 使用)
CameraController 是整个库的核心控制器,提供的主要接口包括:
initCamera(surfaceId, focusMode, cameraDeviceIndex, ratio): 初始化相机并绑定预览 Surface。capturePhotoToBuffer(): 同步捕获当前帧画面并返回包含宽、高及像素数据的ArrayBuffer。setFilter(filterType: number): 为当前相机开启的预览及录像画面实时绑定和设置滤镜(通过滤镜枚举类型)。startNativeRecord(fd, width, height)/stopNativeRecord(): 控制开启和关闭高性能 Native 层视频录制功能。- 相机参数控制: 提供了
setZoomRatio,isFocusPoint,isMeteringPoint,isExposureBiasRange等接口用于控制拍摄和录播细节。
- HarmonyOS 版本: 5.0.0 Release 或更高版本 (支持 API 12 及以上)。
- 开发工具: DevEco Studio 5.0.0 Release 或更高版本。
- 硬件支持: 支持包含相机硬件外设的标准 HarmonyOS 系统设备(如华为手机终端设备,暂不支持纯模拟器运行相机高阶功能)。
依赖本库的各项功能需要在应用包的 module.json5 配置文件中声明如下权限:
ohos.permission.CAMERAohos.permission.MICROPHONEohos.permission.READ_MEDIAohos.permission.WRITE_MEDIAohos.permission.READ_IMAGEVIDEOohos.permission.WRITE_IMAGEVIDEO