C# Xamarin设置相机分辨率
我在XamarinVisualStudio中做了一个自定义相机应用程序,它以非常低的分辨率拍摄照片,所以我添加了这段代码C# Xamarin设置相机分辨率,c#,android,xamarin,camera,xamarin.android,C#,Android,Xamarin,Camera,Xamarin.android,我在XamarinVisualStudio中做了一个自定义相机应用程序,它以非常低的分辨率拍摄照片,所以我添加了这段代码 public void OnSurfaceTextureAvailable(Android.Graphics.SurfaceTexture surface, int w, int h) { _camera = Android.Hardware.Camera.Open(); Android.Hardware.Cam
public void OnSurfaceTextureAvailable(Android.Graphics.SurfaceTexture surface, int w, int h)
{
_camera = Android.Hardware.Camera.Open();
Android.Hardware.Camera.Parameters param = _camera.GetParameters();
IList<Android.Hardware.Camera.Size> supportedSizes = param.SupportedPictureSizes;
Android.Hardware.Camera.Size sizePicture = supportedSizes[0];
param.SetPictureSize(sizePicture.Height, sizePicture.Width);
_camera.SetParameters(param);
var previewSize = _camera.GetParameters().PreviewSize;
_textureView.LayoutParameters =
new FrameLayout.LayoutParams(h, w, GravityFlags.Center);
try
{
_camera.SetPreviewTexture(surface);
_camera.StartPreview();
}
catch (Java.IO.IOException ex)
{
Console.WriteLine(ex.Message);
}
_textureView.Rotation = 90.0f;
}
SurfaceTextureAvailable上的公共void(Android.Graphics.SurfaceTexture-surface,int w,int h)
{
_camera=Android.Hardware.camera.Open();
Android.Hardware.Camera.Parameters参数=_Camera.GetParameters();
IList supportedSizes=param.SupportedPictureSizes;
Android.Hardware.Camera.Size-sizePicture=supportedsize[0];
参数SetPictureSize(sizePicture.Height,sizePicture.Width);
_摄像机参数设置(参数);
var previewSize=\u camera.GetParameters().previewSize;
_textureView.LayoutParameters=
新的FrameLayout.LayoutParams(h、w、GravityFlags.Center);
尝试
{
_摄像头。设置预览纹理(表面);
_camera.StartPreview();
}
捕获(Java.IO.IOException-ex)
{
控制台写入线(例如消息);
}
_纹理视图。旋转=90.0f;
}
在第一行中,我获取相机参数,然后获取支持的图片大小,然后选择第一行([0]),最后设置图片大小
Android.Hardware.Camera.Parameters param = _camera.GetParameters();
IList<Android.Hardware.Camera.Size> supportedSizes = param.SupportedPictureSizes;
Android.Hardware.Camera.Size sizePicture = supportedSizes[0];
param.SetPictureSize(sizePicture.Height, sizePicture.Width);
_camera.SetParameters(param);
Android.Hardware.Camera.Parameters参数=_Camera.GetParameters();
IList supportedSizes=param.SupportedPictureSizes;
Android.Hardware.Camera.Size-sizePicture=supportedsize[0];
参数SetPictureSize(sizePicture.Height,sizePicture.Width);
_摄像机参数设置(参数);
但当我运行代码时,会显示以下消息:
未处理的异常:
Java.Lang.RuntimeException:设置参数失败
这里怎么了?我无法设置函数返回的任何受支持的大小?我如何选择其中任何一个,例如第一个?还有一些我必须考虑的问题?您将
宽度
和高度
参数进行了转换,从而提供了无效(不受支持)的图片大小
param.SetPictureSize(sizePicture.Width, sizePicture.Height);
void setPictureSize(整数宽度、整数高度)
回复:关于您选择图片大小的方式的简短说明。索引为0的并不总是最好的。虽然Nexus 4、5和5X是这样的,但它并不适用于某些索尼设备。谢谢你的建议,我会考虑它。你能帮我解决这个问题吗:这太困难了