android相机开发
记录android平台相机开发的相关知识。
wangyantaozzu
这个作者很懒,什么都没留下…
展开
-
android-camera2相机开发-10-opengl离屏渲染、拍照、前后相机切换
项目github地址离屏渲染之前已经将相机的预览数据已经输出到opengl的纹理上,渲染的时候,opengl直接将纹理渲染到了屏幕。但是,如果想要对该纹理进一步处理,就不能直接渲染到屏幕,而是应该先渲染到屏幕外的缓冲区(FrameBuffer)处理完后再渲染到屏幕。渲染到缓冲区的操作就是离屏渲染。离屏渲染的目的是更改渲染目标(屏幕->缓冲区),主要步骤如下:准备离屏渲染所需要的 ...原创 2019-12-30 16:42:50 · 1181 阅读 · 1 评论 -
android-camera2相机开发-9-使用opengl实现LUT滤镜
项目github地址上一篇文章简单的实现了几个常见的滤镜效果,针对每一种滤镜,在片段着色器中编写响应的计算逻辑。但是,随便一个美颜app、短视频app的滤镜都太多了,总不能一个一个写代码去吧,况且好些滤镜特别接近,就让程序员看一眼,怎么写计算逻辑。。其实,这种风格化的滤镜是通过把原图的像素颜色经过过处理,变成另一种颜色来实现的,所以简单的方法就是使用LUT方法,通过设计师提供的LUT文件来实...原创 2019-12-30 16:42:32 · 1337 阅读 · 0 评论 -
android-camera2相机开发-8-使用opengl实现滤镜效果
项目github地址前一篇文章中,实现了 opengles 进行相机预览的功能,基本的流程如下:把相机的预览数据做成纹理,绑定到opengles对应的纹理单元上然后通过opengles 的内置函数 texture(),在片段着色器中根据纹理和纹理坐标进行插值计算直接将计算结果输出到颜色缓冲区,显示到屏幕的像素上。给图像添加滤镜本质上就是图片处理,也就是对图片的像素进行计算,简单来说,...原创 2019-12-30 16:42:24 · 2070 阅读 · 0 评论 -
android-camera2相机开发-7-使用opengles进行相机预览
项目github地址前面几篇文章梳理了 android 相机的基本使用流程及相关的 api,完成了预览拍照等功能。就预览而言,后续想做实时滤镜等功能的话,如果按照之前的方法用 ImageReader 拿到数据之后做处理再显示,一是繁琐,而是效率太低,卡顿严重。所以需要使用 opengles 对相机的预览数据进行渲染,可以很大的提高效率,防止卡顿。这篇文章先不做滤镜,而是先实现 opengle...原创 2019-12-30 16:42:10 · 978 阅读 · 2 评论 -
android-camera2相机开发-6-拍照&屏幕旋转适配
前面几篇文章实现了相机的预览,对预览中出现的问题及需要注意的事项进行了梳理。本篇文章对相机的拍照流程、拍照方向及屏幕旋转时的适配问题进行梳理。初始化相机和view这里选择最大的相机输出尺寸作为拍照尺寸和预览尺寸。 @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInst...原创 2019-12-30 16:41:26 · 4789 阅读 · 2 评论 -
android-camera2相机开发-5-获取、处理预览帧数据
camera2 api 中使用 ImageReader 类间接获取预览帧数据。ImageReader 使用之前,需要设置一个监听 OnImageAvailableListener,在预览帧可用时会被回调,在回调方法中可以接收到预览帧,并实现具体的处理逻辑。然后,获取 ImageReader 的 Surface ,在创建相机捕获会话时,添加进去作为输出Sruface。最后,构建捕获请求时,需要...原创 2019-12-30 16:41:15 · 1852 阅读 · 1 评论 -
android-camera2相机开发-4-选取最优预览输出尺寸
1. 拍照模式下的最优输出预览尺寸选择一般来说拍照的时候尽量选择最大的输出尺寸,以达到最好的预览效果(和拍出的照片效果一样)。2. 视频模式下的最优输出预览尺寸选择相机输出尺寸默认是横向的(宽>高),手机窗口一般是竖向的(不考虑旋转横置的情况),所以比较时将输出尺寸的 宽高比 与 预览窗口的 高宽比 进行比较。录制视频的时候,为了预览和播放效果好(充满窗口),可以选择宽高比与预览窗...原创 2019-12-30 16:40:58 · 3196 阅读 · 0 评论 -
android-camera2相机开发-3-解决相机预览图像拉伸问题
简单来说,预览图像拉伸问题是相机的输出尺寸和屏幕上预览窗口的宽高比不同引起的。所以可以根据选择的相机输出尺寸的宽高比调整预览窗口的宽高比,使两者一致,从而消除图像拉伸问题。本篇文章在上篇文章的基础上,自定义可以设置宽高比的预览控件 AutoFitTextureView ,解决图像拉伸的问题。1. 自定义 AutoFitTextureViewAutoFitTextureView 继承自 Te...原创 2019-12-30 16:40:42 · 3847 阅读 · 1 评论 -
android-camera2相机开发-2-动态切换相机预览尺寸
上一篇文章中介绍了相机预览的基本实现,只固定的显示了一个输出尺寸, android 设备相机实际可以支持输出很多尺寸的图像,不同的设备具体尺寸数值不同,通过系统提供的方法可以获取设备支持的输出尺寸,具体的操作可以参考上一篇文章中的相关内容。本文在上一篇文章的基础上进行调整,实现的效果是,添加一个按钮,点击的时候切换相机输出尺寸,更新预览界面。1. 简单的工具类将一些简单的相机的操作封装程一个...原创 2019-12-30 16:40:24 · 3344 阅读 · 1 评论 -
android-camera2相机开发-1-相机预览
1. 配置权限AndroidManifext.xml文件:<uses-permission android:name="android.permission.CAMERA" />android6.0以后的动态权限:网上很多教程,这里不再赘述。2. 布局文件很简单的布局,只有一个 TextureView 。<?xml version="1.0" encoding="u...原创 2019-12-30 16:38:28 · 949 阅读 · 0 评论