推荐一个滤镜和美颜功能实现项目,包含 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)
项目效果图:
项目源码:直接阅读原文
来源: https://mp.weixin.qq.com/s?__biz=MzI2OTQxMTM4OQ==&mid=2247485711&idx=1&sn=e9e91f13fadabbf41bb1967c6e2f5f22&chksm=eae1fc5ddd96754b43fafa10f912b6a8929d6ba47ead2f7ba960a26bf810579f2889d8e41596#rd