Android+JNI+OpenGL开发自己的美图秀秀
2016-01-18 16:39
483 查看
代码地址
网上对于Android相机的开发博文较少,碰巧闲着无聊,遂完成此工程,仅供学习交流,可根据地址中的示例完成类似于美图秀秀的APP,包含40+种滤镜与实时美颜与后处理美颜功能。若对您有帮助,点开地址并且点击右上角的Star。
1.相机预览模式
示例见:com.seu.magiccamera.activity.CameraActivity
需要自行创建一个glsurfaceview
拍照采用将图片绘制到等大小的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.正在编码部分:
渐晕滤镜
文字、图片等与原图合成
美颜(眼睛、唇部等)
网上对于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.正在编码部分:
渐晕滤镜
文字、图片等与原图合成
美颜(眼睛、唇部等)
相关文章推荐
- Android自定义控件
- Android 用adb pull或push 拷贝手机文件到到电脑上,拷贝手机数据库到电脑上,拷贝电脑数据库到手机上
- android.mk 自动寻找cpp文件
- android中常见的内存泄露场景
- Android Studio 解决方法数超过65536,导致dex无法生成的问题
- Android消息机制
- Android常用
- android xml中的xliff属性
- Handler类的简单使用与进度条的更新
- android之ViewPager的使用详解
- golang开发android环境搭建_window
- android DevicePolicyManager申请系统管理权限
- android 仿QQ五毛特效之查看红包领取详情界面
- Android定位&地图&导航——基于百度地图,实现自定义图标绘制并点击时弹出泡泡
- Android历代版本号
- Android开发-后端Model_Service
- Android开发-前后端控制器intent
- 【Android】ExpandableListView示例
- Android开发-前端视图Activity
- Android开发