Skip to content

qingkouwei/gpuimage

Repository files navigation

鸿蒙 GPUImage (libgpuimagelib)

简介

本项目为 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 使用)

API 概览

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.CAMERA
  • ohos.permission.MICROPHONE
  • ohos.permission.READ_MEDIA
  • ohos.permission.WRITE_MEDIA
  • ohos.permission.READ_IMAGEVIDEO
  • ohos.permission.WRITE_IMAGEVIDEO

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages