Android+JNI+OpenGL开发自己的美图秀秀

代码地址


网上对于Android相机的开发博文较少,碰巧闲着无聊,遂完成此工程,仅供学习交流,可根据地址中的示例完成类似于美图秀秀的APP,包含40+种滤镜与实时美颜与后处理美颜功能。若对您有帮助,点开地址并且点击右上角的Star。


1.相机预览模式

示例见: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并保存。


2.照片模式

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

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

import com.seu.magicfilter.filter.advance.image

------可调节对比、色调、锐化、曝光、亮度、饱和度6个参数

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



3.相机输入:

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

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

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

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

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


4.实时美颜滤镜

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

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

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

参见:Android平台Camera实时滤镜实现方法探讨(十一)--实时美颜滤镜


5.其他:

参见:Android平台Camera实时滤镜实现方法探讨(七)--滤镜基本制作方法(一)

import com.seu.magicfilter.filter.advance.common.MagicAmaroFilter

------Instagram中Amaro滤镜

import com.seu.magicfilter.filter.advance.common.MagicAntiqueFilter

------“复古”滤镜

import com.seu.magicfilter.filter.advance.common.MagicBlackCatFilter

------“黑猫”滤镜,增强阴影与色调,颜色加深

import com.seu.magicfilter.filter.advance.common.MagicBrannanFilter

------Instagram中Brannan滤镜

import com.seu.magicfilter.filter.advance.common.MagicBrooklynFilter

------Instagram中Brooklyn滤镜

import com.seu.magicfilter.filter.advance.common.MagicCalmFilter

------“平静”滤镜,偏棕灰

import com.seu.magicfilter.filter.advance.common.MagicCoolFilter

------“冰冷”滤镜,偏蓝

import com.seu.magicfilter.filter.advance.common.MagicEarlyBirdFilter

------Instagram中EarlyBird滤镜

import com.seu.magicfilter.filter.advance.common.MagicEmeraldFilter

------“祖母绿”滤镜

import com.seu.magicfilter.filter.advance.common.MagicEvergreenFilter

------“常青”滤镜

import com.seu.magicfilter.filter.advance.common.MagicFairytaleFilter

------“童话”滤镜

import com.seu.magicfilter.filter.advance.common.MagicFreudFilter

------Instagram中Freud滤镜

import com.seu.magicfilter.filter.advance.common.MagicHealthyFilter

------“健康”滤镜

import com.seu.magicfilter.filter.advance.common.MagicHefeFilter

------Instagram中Hefe滤镜

import com.seu.magicfilter.filter.advance.common.MagicHudsonFilter

------Instagram中Hudson滤镜

import com.seu.magicfilter.filter.advance.common.MagicInkwellFilter

------Instagram中Inkwell滤镜

import com.seu.magicfilter.filter.advance.common.MagicKevinFilter

------Instagram中Kevin滤镜

import com.seu.magicfilter.filter.advance.common.MagicLatteFilter

------“拿铁”滤镜

import com.seu.magicfilter.filter.advance.common.MagicLomoFilter

------Instagram中Lomo滤镜

import com.seu.magicfilter.filter.advance.common.MagicN1977Filter

------Instagram中N1977滤镜

import com.seu.magicfilter.filter.advance.common.MagicNashvilleFilter

------Instagram中Nashville滤镜

import com.seu.magicfilter.filter.advance.common.MagicNostalgiaFilter

------“怀旧”滤镜,偏绿系

import com.seu.magicfilter.filter.advance.common.MagicPixarFilter

------Instagram中Pixar滤镜

import com.seu.magicfilter.filter.advance.common.MagicRiseFilter

------Instagram中Rise滤镜

import com.seu.magicfilter.filter.advance.common.MagicRomanceFilter

------"浪漫"滤镜,粉红系

import com.seu.magicfilter.filter.advance.common.MagicSakuraFilter

------"樱花“滤镜,粉红系

import com.seu.magicfilter.filter.advance.common.MagicSierraFilter

------Instagram中Sierra滤镜

import com.seu.magicfilter.filter.advance.common.MagicSkinWhitenFilter

------”美白“滤镜,增白皮肤

import com.seu.magicfilter.filter.advance.common.MagicSunriseFilter

------”日出“滤镜

import com.seu.magicfilter.filter.advance.common.MagicSunsetFilter

------”日落“滤镜

import com.seu.magicfilter.filter.advance.common.MagicSutroFilter

------Instagram中Sutro滤镜

import com.seu.magicfilter.filter.advance.common.MagicSweetsFilter

------”甜美“滤镜

import com.seu.magicfilter.filter.advance.common.MagicTenderFilter

------”温和“滤镜

import com.seu.magicfilter.filter.advance.common.MagicToasterFilter

------Instagram中Toaster滤镜

import com.seu.magicfilter.filter.advance.common.MagicValenciaFilter

------Instagram中Valencia滤镜

import com.seu.magicfilter.filter.advance.common.MagicWarmFilter

------”温暖“滤镜

import com.seu.magicfilter.filter.advance.common.MagicWhiteCatFilter

------”白猫“滤镜

import com.seu.magicfilter.filter.advance.common.MagicXproIIFilter

------Instagram中XproII滤镜


6.JNI部分(jni文件夹下):

包含一个磨皮算法与一个美白算法

参见Android平台Camera实时滤镜实现方法探讨(九)--磨皮算法探讨(一)


7.正在编码部分:

渐晕滤镜

文字、图片等与原图合成

美颜(眼睛、唇部等)

猜你喜欢

转载自blog.csdn.net/oShunz/article/details/50537631