首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Camera2全屏预览和图像捕获

Camera2全屏预览和图像捕获
EN

Stack Overflow用户
提问于 2017-02-01 17:26:57
回答 2查看 3.4K关注 0票数 4

我正在使用Camera2的sample code,我想知道如何在全屏模式下预览和捕获图像?This因此问题似乎在视频模式下解决了它,但我找不到任何图像捕获的解决方案。样品片段在底部有一个蓝色区域,并且也具有bas状态。我想隐藏这两个,并使用整个屏幕来显示预览,并捕获全屏大小的图像。

EN

回答 2

Stack Overflow用户

发布于 2017-12-22 15:50:42

Eddy关于宽高比ratio.The相机传感器为4:3的判断是正确的。屏幕通常为16:9。示例代码选择显示整个相机预览,因此屏幕的一部分不会被填满。您需要拉伸以填充整个屏幕,但是在这种情况下,捕获的图像包括预览中未显示的区域。

要全屏查看,请在AutoFitTextureView中将onMeasure方法更改为:

代码语言:javascript
运行
AI代码解释
复制
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        int width = MeasureSpec.getSize(widthMeasureSpec);
        int height = MeasureSpec.getSize(heightMeasureSpec);
        if (0 == mRatioWidth || 0 == mRatioHeight) {
            setMeasuredDimension(width, height);
        } else {
            if (width < height * mRatioWidth / mRatioHeight) {
                // setMeasuredDimension(width, width * mRatioHeight / mRatioWidth);
                setMeasuredDimension(height * mRatioWidth / mRatioHeight, height);
            } else {
                //setMeasuredDimension(height * mRatioWidth / mRatioHeight, height);
                setMeasuredDimension(width, width * mRatioHeight / mRatioWidth);
            }
        }
    }

更新:正如Eddy所指出的,这将在全屏上显示相机预览的左上部分,留下底部和右侧在视图之外,结果是图像偏离中心。在我的特殊情况下,主题需要水平居中,所以我修改了转换矩阵,使主题水平居中。代码如下:

代码语言:javascript
运行
AI代码解释
复制
// adjust the x shift because we are not showing the whole camera sensor on the screen, need to center the capture area
    int screenWidth = Resources.getSystem().getDisplayMetrics().widthPixels;
    Log.d(TAG, "screen width " + screenWidth);
    int xShift = (viewWidth - screenWidth)/2;
    matrix.setTranslate(-xShift, 0);

        mTextureView.setTransform(matrix);
票数 6
EN

Stack Overflow用户

发布于 2017-02-02 22:32:26

请注意,相机传感器的宽高比和设备屏幕的宽高比通常不匹配-传感器的宽高比一般为4:3,屏幕的宽高比一般在16:9左右。尽管两者之间存在很大的差异。

由于宽高比不匹配,您需要决定是否要设置黑条,或者缩放相机预览以使其充满屏幕(但图像的某些部分不可见)。

在任何情况下,要让预览是全屏的,只需要让TextureView (或SurfaceView)成为整个布局。因此,基本上,编辑布局文件:fragment_camera2_basic.xml,删除所有其他视图,并在源代码中删除对它们的引用。或者将它们更改为在TextureView的顶部,而不是旁边--这都是标准的Android UI布局。而且你需要让你的活动成为full-screen

默认情况下,AutoFillTextureView将尝试保持纵横比,因此它将生成黑条。如果您不想使用黑条,那么您必须更改AutoFillTextureView,这并不简单,我不会在此赘述。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41985926

复制
相关文章
根据屏幕尺寸重写iframe中video的尺寸-当页面需要全部加载后才能判断的情况
代码实例 function sleepcheckvideo(){ // alert('here is a function'); setTimeout(function() {
lilugirl
2019/05/26
1.5K0
Cocoa Iphone 屏幕尺寸
1、状态栏:通常是20px高,在打电话或显式消息时,放大到40px。因此,在纵向模式下,应用程序的可用空间是320×460,横向模式下是480×300;
全栈程序员站长
2022/08/28
3940
iPhone 各屏幕尺寸及解析[通俗易懂]
表示沿着对角线,每英寸所拥有的像素(pixel)数目,PPI的数值越高,代表显示屏能够以越高的密度显示图像,即通常所说的分辨率越高,颗粒感越弱,图像更清晰。
全栈程序员站长
2022/07/26
3.4K0
iPhone 各屏幕尺寸及解析[通俗易懂]
P不能包div?
是什么原因导致的呢? W3C这样说:“ 如果你这样做,将会严重违反P的语义 ” 解决方法暂时没有 于是我找到了块级元素和内联元素的嵌套规则,如下:
我不是费圆
2020/09/22
7890
P不能包div?
Android 获取屏幕尺寸与密度
android中获取屏幕的长于宽,参考了网上有很多代码,但结果与实际不符,如我的手机是i9000,屏幕大小是480*800px,得到的结果却为320*533
阳光岛主
2019/02/19
2.6K0
创建支持多种屏幕尺寸的Android应用
Android涉及各种各样的支持不同屏幕尺寸和密度的设备。对于应用程序,Android系统通过设备和句柄提供了统一的开发环境,大部分工作是校正每一个应用程序的用户界面到它显示的屏上。与此同时,系统提供APIs允许你控制应用界面为特定的屏幕尺寸和密度,为不同屏幕的配置提供最优化的用户界面设计。例如,你可能会要一个平板电脑的用户界面,这不同于手机的用户界面。 虽然系统能缩放,调整其尺寸,以使应用软件工作在不同屏上,但是应该尽量优化应用软件适应不同的屏幕尺寸和密度。为此,对所有设备的用户体验应最大化且应让用户们相
欢醉
2018/01/22
2.7K0
JointJS 根据内容调整画布尺寸
用法 paper.fitToContent({ padding: 20, // 内容周围留白大小 allowNewOrigin: 'any' // 注意此配置如果不填,padding的top和left属性不会生效 }) 源码 fitToContent: function(gridWidth, gridHeight, padding, opt) { // alternatively function(opt) if (isObject$1(gridWidth)) { /
路过君
2021/12/07
4310
css适配屏幕尺寸大小自适应
改新模板的时候考虑到单独适配手机端排版美化。只需要在css内写好窗口大小相对应的样式。访问就根据窗口大小自动使用相应的样式。
AlexTao
2020/02/13
6.2K0
理一理屏幕尺寸那些事
其中configuration.fontScale是根据系统字号改变的,默认是1,所以会遇到dp和sp混用无影响的情况。但,一旦用户改变了系统字号,有一定的缩放量,dp的为sp就原形毕露了,所以字体还是乖乖用sp,别没事找事。
张风捷特烈
2018/12/21
9450
一个初级前端结合css、div谈一谈屏幕尺寸、分辨率、缩放概念
这几个小知识点,也许我们在日常中,经常有所耳闻,但是具体什么意思呢,总是容易混淆,经过我多次亲身经历开发,特地总结如下(不要小瞧这几个概念哦,这可跟我们css布局开发息息相关):
潜心专研的小张同学
2023/01/03
1.3K0
一个初级前端结合css、div谈一谈屏幕尺寸、分辨率、缩放概念
为任意屏幕尺寸构建 Android 界面
在过去的 12 个月内,有约 1 亿台新平板设备被激活,Chrome OS 的激活量增长了 92%,是增长速度最快的桌面平台。这意味着在平板电脑、可折叠设备和 Chrome OS 设备上,有超过 2.5 亿台大屏幕设备运行着 Android 系统,而关于可折叠设备的使用数量也在不断增长,同比增长超过 250%,因此,"大屏" 正在成为 Android 设备中一个重要且增长势头最快的细分市场。这也让设备制造厂商们意识到,针对大屏做优化是让设备在高端手机细分市场中脱颖而出的机会。
Android 开发者
2022/03/25
4.2K0
为任意屏幕尺寸构建 Android 界面
理一理屏幕尺寸那些事
其中configuration.fontScale是根据系统字号改变的,默认是1,所以会遇到dp和sp混用无影响的情况。但,一旦用户改变了系统字号,有一定的缩放量,dp的为sp就原形毕露了,所以字体还是乖乖用sp,别没事找事。
张风捷特烈
2018/12/21
9220
苹果一倍图尺寸(iphone11pro屏幕尺寸)
iPhone手机屏幕尺寸一般指:物理像素,ps像素。 iPhone的app现在一般适配2倍图和3倍图。 iphont4s 是2倍图,但是你画一个粗为0.5的线,iphont4s显示不出来,iphont5s却可以看到一个像素(从截图上看到的)的线来。 识别手机机型使用的是几倍图,一般通过这个值来识别:[UIScreen mainScreen].scale。若为1就1倍图(iphone 4/iphone 4s是个例外),若为2就是2倍图,若是3就是3倍图。但是现在iphone 4/iphone 4s都是按照2倍图处理的,并且他们的屏幕截图也是640*960,说明它是2倍图。但是若你在iphone 4/iphone 4s手机上画条0.5像素的线是显示不出来的,但是在iphone 6及更高版本画一条1/([UIScreen mainScreen].scale)(就是0.5或1/3)的线是显示出来的,说明iphone 4/iphone 4s物理分辨率是1像素。 准确的倍图计算公式是:round(屏幕截图宽度/[[UIScreen mainScreen] bounds].size.width)。屏幕截图(上传苹果商店的屏幕快照或者用手机截屏得到的图片)的宽度(或高度)除以物理宽度(或高度,宽度是[[UIScreen mainScreen] bounds].size.width,高度是[[UIScreen mainScreen] bounds].size.height)的四舍五入的整数。iPhone XR的828/375=2.2.08,四舍五入值是2,它的[UIScreen mainScreen].scale也为2(FULL_WIDTH:375.000000, FULL_HEIGHT:812.000000, [UIScreen mainScreen].scale:2.000000),所以它是用2倍图。 下面是开发中用到的iphone,ipod,ipad对应的实际像素点和图片倍率: iphont4,iphone4s实际像素点: 3.5英寸屏(320/480) iphone5,iphone 5s,iphone 5se实际像素点: 4英寸屏 (320/568) iphont6,iphone7,iphone8实际像素点: 4.7英寸屏(375/667) iphont6 plus,iphone7 plus,iphone8 plus实际像素点: 5.5英寸屏 (414/736) iphontX若不设置启动图片相当于iPhone8的放大模式(375/667) ,若设置了启动图片才是他的实际像素 实际像素点: 5.8英寸屏(375/812) iPhone 12 mini实际像素点: 5.8英寸屏(375/812) ipod4实际像素点: 4英寸屏(320/568) iphontX若不设置启动图片相当于iPhone8的放大模式(375/667) ,若设置了启动图片才是他的实际像素,实际像素点: 5.4英寸屏(iPhone 12 mini)(375/812) 5.8英寸屏(iPhone X,iPhone XS,iPhone 11Pro)(375/812) 6.1英寸屏(iPhone XR,iPhone11) (414/896) 6.1英寸屏(iPhone12) (390/844) 6.5英寸屏(iPhone XS Max, iPhone 11 Pro Max, iPhone 12 Pro)(414/896) 6.7英寸屏(iPhone 12 Pro Max)(428/926) ipod4实际像素点(强制横屏模式): 4英寸屏(320/568) 只支持iPhone不支持iPad的app在iPad上运行都是2倍图,竖屏模式实际像素点:(375/667) iPad (8th generation) FULL_WIDTH:375.000000, FULL_HEIGHT:667.000000, [UIScreen mainScreen].scale:2.000000, 倍率:2.000000 iPad Air(4th generation) FULL_WIDTH:375.000000, FULL_HEIGHT:667.000000, [UIScreen mainScreen].scale:2.000000, 倍率:2.000000 iPad Pro (9.7-inch) FULL_WIDTH:375.000000, FULL_HEIGHT:667.000000, [UIScreen mainScreen].scale:2.000000, 倍率:2.000000 iPad Pro (11-inch) FULL_WIDTH:375.000000, FULL_HEIGHT:667.000000, [UIS
全栈程序员站长
2022/07/27
1.1K0
iPhone屏幕尺寸、分辨率及适配
上表中的宽高(width/height)为手机的物理尺寸,包括显示屏和边框。
全栈程序员站长
2022/07/23
6.2K0
iPhone屏幕尺寸、分辨率及适配
map排序,根据key给map排序,根据value给map排序
1-------Franch 2-------Canada 3-------China
IT云清
2019/01/22
1.6K0
iOS屏幕尺寸和分辨率了解
---------------  iPhone  ---------- --------  iPad ------------
tandaxia
2018/09/27
3K0
iOS屏幕尺寸和分辨率了解
Android 根据屏幕大小设置字体
适应不同Android手机屏幕大小 240*320 320*480 480*800 480*854 540*960 800*1200 800*1280 public static int adjustFontSize(int screenWidth, int screenHeight){ if (screenWidth <= 240) { // 240X320 屏幕 return 10; }else if (screenWidth <= 320){ // 320X
阳光岛主
2019/02/19
1.5K0
window.onresize监听div和屏幕的改变
监听屏幕的改变: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, width=device-width"> <meta content="telephone=
李维亮
2021/07/09
1.1K0
window.onresize监听div和屏幕的改变
杂篇:理一理屏幕尺寸那些事
注:本文的目的在于理清楚一些尺寸关系,如果有表述不当,欢迎指出讨论 本文测试屏幕的长宽像素比为1,奇葩屏幕可跟根据比例自行分析 ---- 一、科普常识: 0.测试准备 手上有两个真机: oppoA77(1920*1080 5.5英寸)、 oppoR15X(2340*1080 6.4英寸) 、 再加一台模拟器(480*320 3.5英寸)仿OPPO R801 辅助:一台笔记本电脑联想Y480N(768*1366 14英寸) 和一个iPad_Air_2(2048*1536 9.7英寸) ----
张风捷特烈
2022/09/20
8980
杂篇:理一理屏幕尺寸那些事
点击加载更多

相似问题

如何在Vuejs中显示选中的复选框值?

123

如何根据收到的值选中复选框

14

检索复选框值并标记为选中

228

选中/取消选中vuejs子组件中的复选框

12

Android :标记为选中的复选框

42
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文