首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android使用SurfaceView作为相机预览识图时,视图被拉伸的问题

网上已经有很多人提到过,导致这种现象的原因是,传入的相机预览图像长宽比例,与SurfaceView本身大小长宽比例不一致。...那么解决方法也非常简单,只要获取一下设备本身支持的相机比例,然后选择其中一个与SurfaceView实际比例(经常就是设备的长宽)最相近的即可。...下面的代码是创建一个用于相机预览的SurfaceView的过程: //继承SurfaceView并且实现SurfaceHolder.Callback接口 public class CameraPreview...mCamera = camera; mHolder = getHolder(); mHolder.addCallback(this); //下面一行适用于Android3.0...public void surfaceCreated(SurfaceHolder holder) { //制定相机图像的绘制区域为这个SurfaceView,并且启动相机的预览

4K80

【Android RTMP】Android Camera 视频数据采集预览 ( 视频采集相关概念 | 摄像头预览参数设置 | 摄像头预览数据回调接口 )

文章目录 一、 Android 端数据采集涉及到的相关概念 二、 Camera 预览图像尺寸设置 三、 获取摄像头采集的数据格式 一、 Android 端数据采集涉及到的相关概念 ---- 1 ....Android 摄像头常量 : Android 中使用特定的常量指定使用哪个摄像头 ; ① 指定后摄像头 : 使用 Camera.CameraInfo.CAMERA_FACING_BACK 常量 , 指定后摄像头...Camera 预览尺寸 : 但是实际上 , Android 系统中的 Camera 摄像头的尺寸参数必须从几个预置的预览尺寸中选择 , 这些预览尺寸是厂家设定好的 , 用户无法设置 Camera 的语言尺寸...设置数据预览回调接口 : ① 设置方法 : Android 中的摄像头 Camera 通过调用 setPreviewCallbackWithBuffer 函数 , 传递一个回调接口对象 ; ② 调用的...采集到的图像数据 : 这是摄像头采集的图像数据 , Android 中的 Camera 摄像头采集数据成功后 , 就会回调该 PreviewCallback 接口中的 onPreviewFrame 方法

1.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    android 自定义gallerey并实现预览功能

    自从Gallery被谷歌废弃以后,Google推荐使用ViewPager和HorizontalScrollView来实现Gallery的效果。...的确HorizontalScrollView可以实现Gallery的效果,但是HorizontalScrollView存在一个很大的问题,如果你仅是用来展示少量的图片,应该是没问题的,但是如果我希望HorizontalScrollView...本篇博客首先介绍HorizontalScrollView的简单用法,然后会在此基础上进行扩展,自定义HorizontalScrollView实现我们上面提到的效果,类似一屏可以显示多个View的ViewPager...,再多的图片也不怕OOM。...自定义HorizontalScrollView 思想: 1、首先根据屏幕的大小和Item的大小,计算可以一个屏幕最多可以加载多少个Item,然后加载该数量Item。

    90750

    Android相机开发那些坑

    一.Android中开发相机应用的两种方式 Android系统提供了两种使用手机相机资源实现拍摄功能的方法,一种是直接通过Intent调用系统相机组件,这种方法快速方便,适用于直接获得照片的场景,如上传相册...[image.jpg] 图4 几种图像之间的关系 下面说下我在开发过程中遇到的三种拉伸变形现象: 1、手机预览画面中物体被拉伸变形。 2、拍摄照片中物体被拉伸变形。...对应到自定义相机的代码中,要注意在拍照按钮事件响应中执行camera.autofocus或camera.takepicture前,一定要检验camera有没有设置预览Surfaceview并开启了相机预览...前置摄像头的镜像效果 Android相机硬件有个特殊设定,就是对于前置摄像头,在展示预览视图时采用类似镜面的效果,显示的是摄像头成像的镜像。而拍摄出的照片则仍采用摄像头成像。...看到这里,大家可能会有些怀疑,不妨现在就试试自己Android手机上的前置摄像头,对比下预览图像和拍摄出照片的区别。

    29.6K50

    Android Camera2 API 同时使用前后摄像头预览

    不久前,我承担了从运行Android的设备的前后摄像头获取同步提要的任务。 像往常一样,我去了Stack Overflow,然后去了GitHub,然后去了其他博客,才意识到我可能独自一人。...您可以在GitHub上找到本教程的示例应用程序: 如果您是Android相机的新手,则android / camera-samples存储库将是一个很好的起点。...注意:Java实现已从android / camera-samples中删除。对于Java实现,您可以参考此分叉存储库 。 在本教程中,假定您能够自己实现相机供稿。...现在我们已经设置了前置摄像头和后置摄像头的参数,现在可以将它们都打开。...我们将分别为前置和后置摄像头创建一个CameraCaptureSession,并传递各自的Surface以获得预览: private fun createCameraPreviewSessionFront

    3.3K30

    鸿蒙next开发中如何解决相机在全屏预览的时候,画面会有变形和拉伸的问题?

    问题描述:为啥相机在全屏预览的时候,画面会有变形和拉伸?...问题分析:如果你在相机开发的时候,设置的预览画面是全屏的尺寸:meta60 2760/1260=2.19, 预览用的相机尺寸是1920/1080=1.777 那么这个预览画面1.77投在xcomponent2.19...比例上,必然会拉伸变形;所以要全屏预览还要不变形:需要先获取手机的宽高比,用手机的屏幕的height/width去和相机底层支持的预览尺寸的 width/height 去取最贴近的值 也就是cameraOutputCapability.previewProfiles...的分辨率列表中选择2336/1080 = 2.16 这套参数,两个比值只相差 0.03 最合适解决方案封装方法 //查找【相机全屏预览宽高】最接近的手机默认分辨率 findClosestNumber(...:string):camera.Profile|undefined { let profileArr=cameraOutputCapability.previewProfiles; //预览的分辨率

    12310

    实时音视频(TRTC)常见问题

    该场景适用于 Android 平台的本地预览端和远端观众端。...Android 平台 1.调用摄像头预览接口,第二参数设置为 null,表示不设置SDK的内部渲染控件 TXCloudVideoView mTRTCCloud.startLocalPreview(mMoreDialog.isCameraFront...场景1:业务场景中没有使用到 CDN 旁路直播 用户在 enterRoom() 之前,只调用开启麦克风采集接口 startLocalAudio(),不需要调用摄像头预览接口startLocalPreview...3.打开摄像头失败 确认摄像头权限是否授予 如果设备是电视、盒子等,使用的摄像头是外接的。目前 TRTCSDK 是支持识别外接摄像头的。因此,需要确认摄像头接头和设备是否接触良好。...4.预览/播放画面出现旋转 使用TRTCSDK摄像头采集 建议更新 SDK 版本到最新版本。

    13.5K188

    基于OpenGLES的Android相机预览

    前言 随着AR效果越来越普及,摄像头在Android中的应用越来越重要。通常摄像头的预览方案,通常使用SurfaceView的方案。...SurfaceView使用非常方便,但是我们没法对SurfaceView显示的视频数据进行处理。这样的架构灵活性很差。因此,Android还提供了Texture的方式。...GLSL OpenGL着色语言(OpenGL Shading Language)是用来在OpenGL中着色编程的语言,也即开发人员写的短小的自定义程序,他们是在图形卡的GPU (Graphic Processor...Unit图形处理单元)上执行的,代替了固定的渲染管线的一部分,使渲染管线中不同层次具有可编程性。...经过以上的过程,我们可以在Android中显示摄像头的画面。 如有问题,欢迎指正。

    1.6K10

    JavaCV的摄像头实战之二:本地窗口预览

    本篇概览 前文《JavaCV的摄像头实战之一:基础》已经为整个系列做好了铺垫,接下来的文章会专注于如何使用来自摄像头的数据,本篇先从最简单的开始:本地窗口预览 编码 前文创建的simple-grab-push...工程中已经准备好了父类AbstractCameraApplication,所以本篇继续使用该工程,创建子类实现那些抽象方法即可 编码前先回顾父类的基础结构,如下图,粗体是父类定义的各个方法,红色块都是需要子类来实现抽象方法...的实例化和参数设置: @Override protected void initOutput() { previewCanvas = new CanvasFrame("摄像头预览...= previewCanvas) { previewCanvas.dispose(); } } 至此,用本地窗口预览摄像头的功能已开发完成,再写上main...(1000); } 运行main方法,如下图,摄像头顺利工作,左上角的时间水印也能正常显示(可见今天深圳的天气不错,应该出去走走,而不是在家写博客…): 至此,咱们已完成了本地窗口预览功能,得益于

    56840

    Android相机应用基本功能实现

    ——实现预览、拍照、保存照片等功能 Android: Camera相机开发详解(下) —— 实现人脸检测功能 Camera2架构概述 Camera2引用了管道的概念将安卓设备和摄像头之间联通起来,系统向摄像头发送...Camera2预览流程图 Camera2拍照流程图 Camera2录像流程图 Camera2中比较重要的类及方法 CameraManager 摄像头管理器,用于打开和关闭系统摄像头 getCameraIdList...有两个关于尺寸的变量,一个是预览尺寸(在屏幕上显示),一个是保存图片的尺寸(保存到sd卡中图片的尺寸) 有两个方向,一个是手机方向(如果是竖屏应用的话此方向为0),另一个是摄像头方向(一般来说,前置摄像头方向为...下面是我的手机跑起来时打印的日志 **注意 :**Camera2在一些低端机器上会出现预览画面拉伸问题。...也就是说我们设置的预览宽高 720 * 1280 并不起作用,所以出现了画面拉伸。对于这个问题,我在网上看到的答案是如果遇到这种情况放弃使用Camra2,使用旧的Camera1。

    2K31

    实时音视频 TRTC 常见问题汇总---质量篇

    打开摄像头失败 确认摄像头权限是否授予 如果设备是电视、盒子等,使用的摄像头是外接的。目前 TRTCSDK 是支持识别外接摄像头的。因此,需要确认摄像头接头和设备是否接触良好。 4....预览/播放画面出现旋转 使用TRTCSDK摄像头采集 建议更新 SDK 版本到最新版本。...具体接口使用说明文档见视频画面旋转 使用自定义视频采集 建议更新 SDK 版本到最新版本。 确认下将采集的视频画面的角度是正确。...视频镜像问题 使用前摄像头进行视频通话,会有镜像效果,所以本地预览和远端观众画面是左右颠倒。如果开发者想让两端画面一致,可以参考文档使用前摄像头进行视频通话,本地预览和远端观众画面是左右颠倒? 6....如何横屏推流 开发者可能用设备是电视或者因场景需要横屏推流,具体实现可以参考 Android TRTC 实现横屏视频通话 文档。 7. 杀死进程,如何确认主播是否在直播中?

    3.9K20

    短视频系统源码开发之摄像头预览的实现

    短视频系统源码开发之摄像头预览实现思路: 在xml布局中定义一个TextureView,用于预览相机采集的音视频数据 SurfaceTextureListener的onSurfaceTextureAvailable...回调中打开相机 成功打开相机后,设置相机参数。...比如:对焦模式,预览大小,照片保存大小等等 设置相机预览时的旋转角度,然后调用startPreview()开始预览 关闭页面,释放相机资源 短视频系统源码开发之摄像头预览关键实现: Android 相机...例如: 控制闪光灯setFlashMode 控制旋转方向setRotation 控制图片大小setPictureSize 控制预览大小setPreviewSize 在这里我们打开摄像头然后预览画面到屏幕上再到拍照保存本地...在这里一般都会首先获取相机支持的预览尺寸,通过API parameters.getSupportedPreviewSizes() 得到然后结合想要预览的width,height得到最合适的Camera.Size

    88120

    Android Camera2中如何获取预览YUV数据

    Camera1中我们可以通过onPreviewFrame接口直接获取到默认为NV21格式的预览数据, 如下图注释所示,还可以通过调用setPreviewFormat方法要求Camera返回YV12格式的预览数据...那么在Camera2的架构中,我们要如何获取NV21或者YV12格式的预览数据呢?...在之前的文章Android Camera2详解中描述到,要获取每一帧的预览数据,我们需要ImageReader这个类的帮助: val imageReader = ImageReader(width, height..., format, maxImages) 可以看到有一个format的参数可以指定,遗憾的是NV21格式是不支持的,进入ImageReader的构造方法中可以看到: if (format == ImageFormat.NV21...= it.acquireLatestImage //... } 如何从这个Image对象中获取具体的YUV byte[]数据呢?

    6.7K30

    Android 的多摄像头支持

    :luoqiuyu 校对者:hanliuxin5 从 Android P 开始,添加了对逻辑多摄像头和 USB 摄像头的支持。...这对 Android 开发者来说意味着什么? 多摄像头 一台设备有多个摄像头没什么新鲜的,但是直到现在,Android 设备仍然最多只有前后两个摄像头。...如果设备至少有一个后置摄像头,它将会映射到列表中的第一个摄像头。...因为从 Android P 开始,我们将会看到在同样的情况下更多的设备有多个摄像头,甚至有通过 USB 连接的外部摄像头。...最佳实践 Android 运行在许多不同的设备上。你不应该假设你的应用程序总是在有一两个摄像头的传统的手持设备上运行,而是应该为你的应用程序选择最适合的摄像头。

    2.9K40

    正式版即将到来 | Android 12 Beta 5 现已发布

    麦克风和摄像头指示标志 - 当应用正在使用摄像头或麦克风时,Android 12 会在状态栏中显示指示图标。请访问 官方文档 了解详细信息。...麦克风和摄像头全局开关 - 快速设置 (Quick Settings) 中新增的全局开关功能,可以让用户立即禁用所有应用的麦克风和摄像头访问权限。请访问 官方文档 了解详细信息。...剪贴板访问通知 - 当应用从剪贴板中读取数据时,系统会提醒用户。请访问 官方文档 了解详细信息。 过度滚动拉伸效果 - 过度滚动时,新的 "拉伸" 效果在全系统范围内取代了以前的发光效果。...我们已经添加了可以帮助您发现代码中可能受到 Android 12 变更影响的 lint 检查,如对启动画面的自定义声明、请求精细位置的粗略位置许可、媒体格式,以及高传感器采样率权限等。...您也可以在参与 Android 12 开发者预览计划的设备制造商的设备上体验 Android 12 Beta 5,请访问 developer.android.google.cn/about/versions

    49020

    Android使用技巧:将当前摄像头预览图像保存为Bitmap对象 & 保存到本地

    前言 今天,carson将结合示例讲解:如何将当前摄像头预览图像保存为Bitmap对象 & 保存到本地 ---- 1. 背景 正开启摄像头预览 ---- 2....需求 将当前摄像头预览的图像保存为Bitmap对象 & 保存到手机本地文件夹 ---- 3....SD_PATH = "/sdcard/carsonfile/pic/"; private static final String IN_PATH = "/carsonfile/pic/"; // 步骤2:在摄像头回调数据时将数据存储为...获得摄像头预览Size Camera.Size size = mCamera.getParameters().getPreviewSize();...总结 接下来我将继续介绍 Android开发中的相关知识,感兴趣的同学可以继续关注本人博客Carson_Ho的开发笔记 请帮顶 / 评论点赞!因为你的鼓励是我写作的最大动力!

    2.3K10
    领券