Xamarin Android Camera2Api“GetOutputSizes”总是返回640x480

时间:2018-02-21 13:21:04

标签: c# android xamarin android-camera2

我对Android开发很新,并决定使用Xamarin来接近它。我从Xamarin的网站上抓取了Xamarin (C#) Camera2Api样本,并将其加载到我可以加载相机预览,拍照并将该图片保存到磁盘的位置。但是,当我看到图片时,它总是640x480,这是相当正方形的。

enter image description here

我注意到在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。

尽管实际的相机预览占据了屏幕的整个宽度和高度,但是有人可以解释为什么我的模拟器只支持这样的方形图像吗?

1 个答案:

答案 0 :(得分:0)

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

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