Android用CameraApi实现相机开发以及用opengl es实现相机实时滤镜

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/aasoga/article/details/72899375

对相机开发一直很感兴趣,最近研究了一下自定义相机以及实时滤镜的实现,写了个简单的demo,项目地址,有些地方写的比较粗糙,但大体功能基本都实现了。大体分为三块。

1 利用CameraApi实现自定义相机

在camera包路径下,大体思路就是自定义一个surfaceview,实现surfaceholder的callback,在surfaceCreated回调方法中打开相机,关于这方面的开发还是挺多的,这里就不多说了,界面如图所示
自定义相机
实现的功能包括触摸对焦,添加水印以及闪光灯和一些系统的滤镜,
添加水印主要是通过canvas将水印的bitmap画上去。

2 选择图片以及对图片进行编辑

主要是通过系统的contentprovider获得图片路径,然后通过recyclerview进行展示,图片编辑是利用colormatrix的api,可以实现修改色度饱和度和亮度的效果,以及通过修改rgb值实现一些简单的滤镜效果。

3 利用opengles实现实时滤镜

这个主意是参考了http://blog.csdn.net/oshunz?viewmode=contents 这位大神的博客,没有opengl es基础的话看起来还是挺费劲的,建议先了解一下基础再看就舒服多了。我挑了个滤镜实现了一下,如图
原图
冰冷滤镜
用自定义glsurfaceview,创建surfacetexture然后绑定到利用opengl创建的纹理上,然后在onfame进行渲染即可,滤镜的原理就是通过创建帧缓冲纹理,然后将滤镜的实现绑定到该纹理。滤镜的开发主要是写片段着色器。从而实现各种滤镜效果。

展开阅读全文

没有更多推荐了,返回首页