我对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。
尽管实际的相机预览占据了屏幕的整个宽度和高度,但是有人可以解释为什么我的模拟器只支持这样的方形图像吗?
答案 0 :(得分:0)
使用Camera API时,请务必记住捕获图像大小与预览大小无关。即使您的预览可能是屏幕的全宽/高度,也与您的捕获图像大小无关。
因为图像尺寸是因为这是您正在模拟的“设备”支持的最大尺寸图像,或者它是模拟器本身的限制而返回640x480的原因。如果您要在真实设备上运行此测试,您很可能会看到与您在模拟器上看到的图像不同的图像。或者,您可以使用map.GetOutputSizes((int)ImageFormatType.Jpeg)
打印支持的捕获大小列表
并从640x480的4:3宽高比列表中选择一个大小不是你想要的。