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

本文介绍了一个使用Android、JNI和OpenGL实现的美图应用,包括相机预览模式、照片模式、实时美颜滤镜等功能。通过示例代码和40+种滤镜,展示了如何创建类似美图秀秀的应用,支持调整对比度、色调等参数,并提供了JNI中的磨皮和美白算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码地址


网上对于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合并作为

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值