我有一个SurfaceView可以在我的Android应用程序中显示一个实时相机预览图像。SurfaceView覆盖了纵向屏幕的整个宽度和屏幕高度的一部分。
我试着设置了各种预览尺寸,所以预览有一个扭曲的纵横比,矮胖或者高高的骨瘦如柴。
我打印了显示实际预览显示大小和可用预览相机大小的调试,这样我就可以计算出纵横比错误。
Screen size available for preview: w*h:1200*1646; Aspect ratio: 0.73
Rotation: 0; finalCameraRotation: 90; sideways: true
Supported Preview size: w*h:1080*1920: AspectRatio: 0.56: Error: -22.84%
Supported Preview size: w*h:768*1280: AspectRatio: 0.60: Error: -17.70%
...
List<Camera.Size> ss = parameters.getSupportedPreviewSizes();
...
Camera.Size s = ss.get(pickOne);
parameters.setPreviewSize(s.width, s.height);
...
camera.setParameters(parameters);
...
camera.startPreview();
我试穿了这个
在不同的纵横比下,与square的误差高达25%,在所有这些情况下,我在预览中测量了大约1%的纵横比预测值。(有误差,相机可能不是直射的,可能有点失焦……)
除了谷歌Nexus7。
不管我为Nexus 7设置了什么预览尺寸,测得的纵横比都太高了2%左右,而这恰好是可用的可能的最佳纵横比:
Supported Preview size: w*h:768*1024: AspectRatio: 0.75: Error: 2.87%
这就好像是其他一些程序来了,并修复了最佳预览大小后,我设置了它。实际上,我输入了代码,等待10秒,并从相机回读预览尺寸,这是我设置的一个,但显示没有反映出这一点。无论我设置什么预览尺寸,显示总是最优的。
我自己也偶然发现了这个问题。据报道,这种情况发生在某些设备上,当相机的图片大小和预览大小参数具有不同的纵横比时。在我的例子中,我的Nexus7似乎总是使用4:3的预览,不管我设置了什么。此外,getPreviewSize()
报告的是设置的大小Id,而不是实际使用的大小。
解决方案是找到一个图片大小的纵横比匹配预览的一个。因此,使用GetSupportedPictureSizes()
获取支持的图片大小列表,选择一个具有适当宽高比的图片大小,然后SetPictureSize(int width,int height)
。对我来说就像一种魅力:)
我正在创建带有摄像头功能的Android应用程序。相机屏幕包含顶部的工具栏、工具栏下方的surfaceview(相机预览)以及屏幕底部的相机控制按钮。屏幕总是纵向的。 [删除与问题无关的部分代码行] 这是我的片段 这是预览
问题内容: 目前,我正在使用: 尽管此方法可行,但最终得到的图像大小不同(有些是纵向的,有些是横向的),但是我希望所有图像都具有精确的尺寸。也许是明智的选择? 更新: 我不介意裁剪图像的一小部分。当我说明智的耕作时,我的意思是这样的算法: 问题答案: 这是我对图像进行填充拟合的观点: 它首先使用缩略图操作将图像降低到原始范围内并保留宽高比。然后将其裁剪掉以实际填充边界的大小(因为除非原始图像为正方
我开发了一个用于全屏显示相机预览的小应用程序。我使用的是摄像头API。 这是活动布局: 当设备在纵向时,显示器是垂直缩放的,以匹配设备屏幕的高度——所以宽高比不同于本地相机的宽高比。这两张图片更好地解释了我所说的: 第一幅图像是用本机相机设备拍摄的。第二幅图像是用我的应用程序制作的,相机全屏显示——图像倾斜、拉伸以适应屏幕。 我需要将相机预览设置为全屏,而不考虑mehod给定的预览大小,并且不失真
我已经和https://github.com/commonsguy/cwac-camera 创建了我的自定义CameraFragment和自定义CameraHost。 我已经重写了getPictureSize和getPreviewSize。通过这两种方法,我能够找出可以使用的大小。我的总体想法是拍摄一幅方形图像,并在拍摄前预览它。 我一直在测试,没有设备返回正方形格式的大小,所以我想最好的方法是选
问题内容: 我有两个div彼此相邻浮动。我想要的是在纵向模式下查看时具有100px的宽度,在横向上可以说200 px。这实际上发生在移动设备上。 因此,在横向模式下,div会扩大,在纵向模式下会略微缩小。 有任何想法吗? 问题答案: 好吧,这在CSS2中是不可能的,但是可以使用Javascript做你想做的事情(读出屏幕尺寸等)。 我不确定您正在研究什么技术,但是CSS3正是CSS3 MediaQ
我正在做一个使用camera2 API的项目。当我使用以下命令获取支持的输出预览大小列表时: “输出大小”列表始终返回具有宽度的值 当我使用(或任何类似方法)要检查宽度/高度,它总是返回宽度 根据这个值,我发现在两种情况下,宽度/高度可能会互换它们的值。(w:1920,h:1080预览大小。w:1080,h:1920屏幕大小)。 那么他们之间有什么不同呢?请帮帮我!