android中Camera setDisplayOrientation使用

在 写相机相关应用的时候遇到捕获的画面方向和手机的方向不一致的问题,比如手机是竖着拿的,但是画面是横的,这是由于摄像头默认捕获的画面byte[]是根 据横向来的,而你的应用是竖向的,解决办法是调用setDisplayOrientation来设置PreviewDisplay的方向,效果就是将捕获 的画面旋转多少度显示。
设 置 preview 的顺时针旋转角度。这将影响 preview frames和拍照之后的相片显示。该方法主要用于垂直模式的应用。注意在旋转之前, front-facing cameras 的 preview显示是水平 flip 的,这就是说, image 是沿着 camera sensor 的垂直中心轴来反射的。所以用户可以像照镜子一样看到他们自己。这不会影响传入函数 onPreviewFrame(byte[], Camera) 的、JPEG 相片的、或记录的 video 的 byte array 的顺序,你可以自己做旋转处理。在preview 期间是不允许调用该方法的。如果你想要是你的照片和显示出来的角度一致,你可以参考下列代码:

[java] view plaincopy
    1. public static void setCameraDisplayOrientation (Activity activity, int cameraId, android.hardware.Camera camera) {  
    2.     android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo();  
    3.     android.hardware.Camera.getCameraInfo (cameraId , info);  
    4.     int rotation = activity.getWindowManager ().getDefaultDisplay ().getRotation ();  
    5.     int degrees = 0;  
    6.     switch (rotation) {  
    7.         case Surface.ROTATION_0:  
    8.             degrees = 0;  
    9.             break;  
    10.         case Surface.ROTATION_90:  
    11.             degrees = 90;  
    12.             break;  
    13.         case Surface.ROTATION_180:  
    14.             degrees = 180;  
    15.             break;  
    16.         case Surface.ROTATION_270:  
    17.             degrees = 270;  
    18.             break;  
    19.     }  
    20.     int result;  
    21.     if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {  
    22.         result = (info.orientation + degrees) % 360;  
    23.         result = (360 - result) % 360;   // compensate the mirror  
    24.     } else {  
    25.         // back-facing  
    26.         result = ( info.orientation - degrees + 360) % 360;  
    27.     }  
    28.     camera.setDisplayOrientation (result);  
    29. }

转载于:https://www.cnblogs.com/Free-Thinker/p/3546741.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

来一个可能防止恶意采集和爬虫的SH

没办法,公司的要求,还有,一些山寨爬虫完全不够我们运维人员的感觉, 一天爬虫搞个三四十万的LOG,那我只好干了。。 人家GOOGLE,BAIDU,一天大约也就五六千吧。。 有一个小的SSH技巧,是…

C++的复习

C++的复习 1、命名空间 C++语言引入命名空间(Namespace)这一概念主要是为了避免命名冲突,其关键字为namespace。 科技发展到如今,一个系统通常都不会仅由一个人来开发完成,不同的人开发同一个系统,不可避免地会出现变量或函数的命名冲突,当所有人的代码测试通过,没有…

面对焦虑,我们能做什么?

全世界只有3.14 % 的人关注了爆炸吧知识你在犹豫,你在抱怨,你埋怨这个社会的不公平;你埋怨自己的运气不好,你埋怨付出了得不到结果。其实你只是还不够努力。从此刻起开始改变自己一切还来得及。从现在开始,你有多努力就…

mysql主从日志的定期清理

mysql主从的binlog定时删除是很重要的,一般是通过expire_logs_days 10来设置binlog保留的天数(mysql5.0一下版本不支持),但有时这还不够,假如有几天的日志量非常大,硬盘可能会满,所以不但要设置…

验证规则构建神器 FluentValidation.md

上一篇文章《MediatR在.NET应用中的实践》中,我们在讲MediatR的管线内容时,提到过可以在管线中增加 Command/Query 的验证。今天我来带领大家了解一个.NET技术领域中很「流行」的强类型验证规则构建库:FluentValidation。FluentValidation 简…

C++复习(二)

C++新增数据类型: C++仍然在使用C语言的 char、int、long 等基本数据类型,它们在现代操作系统(Windows XP、Win7、Win10 等)中的长度如下表所示: 说 明 字符型 短整型 整型 长整型 64位长整型 单精度浮点型 双精度浮点型 数据类型 char short int long …

oracle 函数 if 判断,oracle 判断中文函数

create or replace function func_chinese(p_str in varchar2, -- 输入的字符串p_code in varchar2, -- dump(字符串)p_chinese in pls_integer -- 1, 提取汉字, 非1, 提取非汉字) return varchar2asv_code varchar2(32767) : substr(p_code,instr(p_…

Fiddler进行模拟Post提交json数据,总为null解决方式

Request Headers: User-Agent: FiddlerHost: localhost:3248Content-Type: application/json; charsetutf-8 Content-Length: 63 要加上Content-Type: application/json; charsetutf-8,要不是JSON没效 Request Body {"UserID":4,"UserName":&q…

基本排序算法一

一 选择排序 原理:选择排序很简单,他的步骤如下: 从左至右遍历,找到最小(大)的元素,然后与第一个元素交换。从剩余未排序元素中继续寻找最小(大)元素,然后与第二个元素进行交换。以此…

老大爷的手法一看就不一般!

1 超市门口的双枪老大爷▼2 小朋友:谢邀,人在机场,刚下飞船▼3 向你保证这真的是一副刺绣作品▼4 外国最新挑战【我打我自己接力】▼5 疫情期间在家隔离的健身人士们快要被逼疯了▼6 给大家表演一个大变活人吧▼7 家有神兽的家长最近一…

Gamebryo实例学习之二BackgroundLoad

2019独角兽企业重金招聘Python工程师标准>>> 一、简介 后台加载允许应用程序以一个优先级低于主线程的后台线程来加载NIF文件。这个程序演示了如何使用BackgroundLoad后台加载。 二、解析 程序继承了实例基类NiSample。 CallbackStream继…

oracle创建public链接,如何在oracle直接使用地址来创建database link

在2个oracle之间手工同步数据时,DBlink是最快捷的手段之一吧。建dblink的时候需要知道待读取数据库的ip地址,ssid以及数据库用户名和密码。前提:创建dblink的用户有对应的数据库权限create public database link 或者create database link可以…

C++复习(三)

C++函数重载 实际开发中,有时我们要实现的是同一类的功能,只是有些细节不同。例如希望从3个数中找出其中的最大者,而每次求最大数时数据的类型不同,可能是3个整数、3个双精度数或3个长整数。在C语言中,程序员往往需要分别设计出3个不同名的函数,其函数原型与下面类似: i…

WPF 实现圣诞树

WPF开发者QQ群: 340500857 | 微信群 -> 进入公众号主页 加入组织由于微信群人数太多入群请添加小编微信号(yanjinhuawechat)或(W_Feng_aiQ)邀请入群(需备注WPF开发者)PS:有更好的…

sdut2784cf 126b Good Luck!(next数组)

链接 next数组的巧妙应用 学弟出给学弟的学弟的题。。 求最长的 是前缀也是后缀同时也是中缀的串 next的数组求的就是最长的前后缀 但是却不能求得中缀 所以这里 就把尾部去掉之后再求 这样就可以保证是中缀了 先把所有既是前缀也是后缀的长度的求出来标记 然后再去掉尾部 求…

Android文件Apk下载变ZIP压缩包解决方案

[root conf]# pwd /alidata/server/nginx/conf [root conf]# vi mime.typesapplication/vnd.android.package-archive apk; #增加加这一条位置大概: application/x-redhat-package-manager rpm;application/x-sea sea;application/x-shockwave…

聊一聊基于Nacos的metadata完成服务间的AB测试

背景 在很多时候,产品同学或其他 boss 会有一些想法,或好或坏,都会想放到线上环境去验证,看看能不能带来更好的效果。这其实就是一个提出假设和验证假设的过程,而 AB 测试,是验证假设的好方法。对于服务之间…

豆瓣评分9分+,每一部看完不禁感慨!这里是神州大地!

全世界只有3.14 % 的人关注了爆炸吧知识纪录片的一大重要意义,就在于它能将我们的视野和脚步,引向我们无法企及的地方和领域,又能让那些我们曾经到过的地方、经历过的人事,变得更有深意。今天,就给大家分享7部顶级纪录…

旅游社交网站 游范儿

为什么80%的码农都做不了架构师?>>> 应用名称:旅游社交网站 游范儿 应用URL地址:http://tumi.cloudfoundry.com/ 应用说明及使用场景: 用于爱好旅游的人士,发游记,以及所见所闻,…

C++复习(四)

C++引用(Reference) 引用(Reference)是C++相对于C语言的又一个扩充。引用类似于指针,只是在声明的时候用 & 取代了 *。引用可以看做是被引用对象的一个别名,在声明引用时,必须同时对其进行初始化。引用的声明方法如下: 类型标识符 &引用名 = 被引用对象 [例1]C…