繁体   English   中英

Xamarin Android Camera2Api“ GetOutputSizes”始终返回最大640x480

[英]Xamarin Android Camera2Api “GetOutputSizes” always returns largest of 640x480

我对Android开发非常陌生,因此决定使用Xamarin进行开发。 我从Xamarin的网站上获取Xamarin(C#)Camera2Api示例,然后将其加载到可以加载相机预览,拍摄图片并将该图片保存到磁盘的位置。 但是,当我查看图片时,始终为640x480,这相当方形。

在此处输入图片说明

我注意到在Camera2Api项目中,这是通过从摄像机特征中获取ScalerStreamConfigurationMap并确定最大支持大小来设置的。 这是代码段:

var map = (StreamConfigurationMap)characteristics.Get(CameraCharacteristics.ScalerStreamConfigurationMap);
if (map == null) {
    continue;
}

// For still image captures, we use the largest available size.
Size largest = (Size)Collections.Max(Arrays.AsList(map.GetOutputSizes((int)ImageFormatType.Jpeg)),
                                                     new CompareSizeByArea());

无论出于何种原因, map.GetOutputSizes((int)ImageFormatType.Jpeg)) 始终返回最大值640x480。

尽管实际的相机预览占用了屏幕的整个宽度和高度,但是有人能说明我的模拟器为何仅支持这样的方形图像吗?

使用Camera API时,请记住捕获图像的大小与预览大小无关,因此即使预览可能是屏幕的全宽/高度,这也与捕获图像的大小无关。

返回640x480作为图像大小的原因是因为它是您正在仿真的“设备”支持的最大大小的图像,或者它是模拟器本身的限制。 如果要在真实设备上运行此测试,则很可能会看到与模拟器上不同的尺寸图像。 或者,您可以使用map.GetOutputSizes((int)ImageFormatType.Jpeg)打印支持的捕获大小列表,然后从该列表中选择4:3宽高比的大小,而不是640x480。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM