通过GPUImage实现40+种滤镜与实时美颜功能

推荐一个滤镜和美颜功能实现项目,包含40+种滤镜与实时美颜与后处理美颜功能,非常强大。

相机预览模式

示例见:com.seu.magiccamera.activity.CameraActivity

  • 需要自行创建一个glsurfaceview

 
   

GLSurfaceView glSurfaceView = (GLSurfaceView)findViewById(R.id.glsurfaceView);  
FrameLayout.LayoutParams params = new LayoutParams(Constants.mScreenWidth, Constants.mScreenHeight);  
glSurfaceView.setLayoutParams(params);    
mMagicCameraDisplay = new MagicCameraDisplay(this, glSurfaceView);

  • 通过setFilter(int)来更换滤镜

  • 拍照采用将图片绘制到等大小的framebuffer,并读取像素数据,封装成Bitmap并保存。

照片模式:

  • 示例:com.seu.magiccamera.activity.ImageActivity

  • 方法同相机模式,需要通过setImageBitmap(bitmap)来载入图像。

  • import com.seu.magicfilter.filter.advance.image
    ------可调节对比、色调、锐化、曝光、亮度、饱和度6个参数

  • 保存采用将图片绘制到等大小的framebuffer,并读取像素数据,封装成Bitmap并保存。

相机输入:

  • import com.seu.magicfilter.filter.base.MagicCameraInputFilter

  • 更改GPUImageView中在JNI将YUV转换RGB的模式,减少时间消耗约20-50ms。

  • 通过surfaceTexture与OpenGL ES绑定获取纹理id,实现预览数据与屏幕输出的绑定

  • 若无滤镜选择,将该纹理输出到屏幕

  • 若有滤镜选择,将该纹理输出到FrameBuffer,之后所有的滤镜的绘制纹理为该framebuffertexture。

实时美颜滤镜:

  • import com.seu.magicfilter.filter.advance.common.MagicBeautyFilter

  • 可与MagicCameraInputFilter合并作为相机输入层,将每个滤镜都加上美颜效果

  • 可设置美颜强度(1-5),方法:setBeautyLevel(int level)

项目效果图:


通过GPUImage实现40+种滤镜与实时美颜功能_第1张图片

通过GPUImage实现40+种滤镜与实时美颜功能_第2张图片

通过GPUImage实现40+种滤镜与实时美颜功能_第3张图片

通过GPUImage实现40+种滤镜与实时美颜功能_第4张图片


项目源码:直接阅读原文


通过GPUImage实现40+种滤镜与实时美颜功能_第5张图片


你可能感兴趣的:(通过GPUImage实现40+种滤镜与实时美颜功能)