https://blog.csdn.net/oshunz/article/details/50537631

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

2016年01月18日 16:39:10 程序员扛把子 阅读数:20536 标签: 图像处理Android实时滤镜OpenGLShader更多

个人分类: Android-Camera开发

所属专栏: Android图像处理之实时滤镜

代码地址

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

1.相机预览模式

示例见:com.seu.magiccamera.activity.CameraActivity

需要自行创建一个glsurfaceview

  1. GLSurfaceView glSurfaceView = (GLSurfaceView)findViewById(R.id.glsurfaceView);

  2. FrameLayout.LayoutParams params = new LayoutParams(Constants.mScreenWidth, Constants.mScreenHeight);

  3. glSurfaceView.setLayoutParams(params);

  4. 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+JNI+OpenGL开发自己的美图秀秀相关推荐

  1. Android绘图机制 Demo(简单完成美图秀秀的滤镜)

    Android绘图机制 Demo(简单完成美图秀秀的滤镜) 1.xml <?xml version="1.0" encoding="utf-8"?> ...

  2. Android JNI实现Java与C/C++互相调用,以及so库的生成和调用(JNI方式调用美图秀秀so)

    前言 关于Android Studio如何继承JNI开发环境,请阅读上一篇博文 Android CMake集成JNI开发环境本篇博文将结合实例分别讲解Android中Java如何调用C/C++的方法, ...

  3. Android 反编译美图秀秀APK,开发自己的美颜apk

    1.下载美图秀秀apk,使用反编译软件"Android逆向助手"提取里面的jni.java文件到我们的工程里 package com.mt.mtxx.image;public cl ...

  4. Android App开发实战项目之模仿美图秀秀的抠图工具(附源码和演示视频 简单易懂 可直接使用)

    需要图片集和源码请点赞关注收藏后评论区留言~~~ 所谓抠图神器,就是从一副图片中扣出用户想要的某块区域 一.需求描述 美图的修图功能如此强大,离不开专业的图片加工技术,抠图便是其中重要的一项功能.在A ...

  5. 美图秀秀2015年实习生android应用开发方向招聘笔试题

    美图秀秀的实习生笔试题总体上比较简单,考察的比较基础,主要是自己比较low,有些题当时都木有做出来.下面整理了两道当时没做出来的题目. 1(JAVA题).打印九九乘法表,要求:只能使用一次for循环, ...

  6. iOS开发系列--打造自己的“美图秀秀”

    --绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz ...

  7. iOS开发系列–打造自己的“美图秀秀”

    原文出处: KenshinCui    概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介 ...

  8. iOS开发系列--打造自己的ldquo;美图秀秀rdquo;

    --绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz ...

  9. iOS:iOS开发系列–打造自己的“美图秀秀”(下)

    来源: KenshinCui 链接:http://www.cnblogs.com/kenshincui/p/3959951.html 运行效果: 其他图形上下文 前面我们也说过,Quartz 2D的图 ...

最新文章

  1. 支持比特币支付的商家中有90%接受了BCH
  2. Codeforces 535C - Tavas and Karafs
  3. Chrome浏览器查看cookie
  4. 学习响应式BootStrap来写融职教育网站,Bootsrtap第八天轮播图js特效
  5. css外墙法_外墙设计模式示例
  6. 【转】数据安全优秀思想
  7. oracle修改字符集_oracle修改数据库字符集
  8. 矩池云conda创建指定cuda cudnn tf版本的虚拟环境
  9. spring教程(一):简单实现(转)
  10. JDK动态代理与CGLIB的区别
  11. js基础-14-JS阻止事件冒泡和默认事件
  12. charles 本地IP地址
  13. 【转租】【房东直租】【次渠东里一区、高层正规两居室、次卧】
  14. 笑对过往、活在当下、期盼未来
  15. (C++学习笔记七)运算符重载
  16. 转载: HDMI 基础知识
  17. Python 画二维和三维散点同心圆
  18. 2.基于文心大模型套件ERNIEKit实现文本匹配算法,模块化方便应用落地
  19. 直播源列表转换php,TeleList(直播源列表转换软件)V2.3.11 正式版
  20. 美摄助力百度“度咔剪辑”,让知识创作更容易

热门文章

  1. ChatGPT的来源-InstructGPT论文简要介绍
  2. 在SharePoint中创建可自定义属性的文件夹
  3. js笔记2(字符串方法)
  4. GPS卫星信号(一):测距码信号
  5. Istio 大咖说第 7 期直播预告:基于 Envoy/Istio 的云原生 API 网关——开源项目 Hango 的设计与实现...
  6. Windows 10 修改桌面图标二(快捷方式图标)
  7. Python中用pandas和openpyxl向Excel填入数据,不覆盖源数据和格式
  8. 互联网舆情监测系统的发展阶段,TOOM互联网舆情监测系统有哪些?
  9. c++十大排序之计数排序
  10. 横版表格加入竖向页码