2012-07-20 73 views
0

好,使得相机应用,一个部分是选择IMG大小,用下面的代码完成:的Android,摄像头和“实际”支持的图像尺寸

Camera.Parameters parameters = camera.getParameters(); 
List<Camera.Size> sizes = parameters.getSupportedPictureSizes(); 

我得到一个不错的列表与支持的尺寸。两个最差的分辨率是640x480和320x240。 但是当我将分辨率设置为320x240而不是640x480时!

我设定如下代码解析:

private void setImgSize() 
{ 
    Log.d(TAG, "+setImgSize"); 
    Camera.Parameters params = camera.getParameters(); 
    params.setPictureSize(WIDTH, HEIGHT); 
    camera.setParameters(params); 

    Toast.makeText(getApplicationContext(), 
     "Resolution set to "+WIDTH+"x"+HEIGHT, 
     Toast.LENGTH_SHORT).show(); 
} 

宽度和高度从settingsactivity返回的值,我得到一个不错的吐司,告诉分辨率设置为320x240。但是当拍摄图像时,分辨率是640x480!好的,test2。我们将分辨率设置为640x480。吐司告诉说,分辨率是640x480。凉。我们来捕捉一些图像,其分辨率是640x480的定义!

那么,我在这里做错了什么和/或什么我不明白?!?!我获得了支持的图像大小,至少其中一个不受支持。有什么方法可以检查选定的分辨率是否支持实际上是

我使用的设备是Android 2.3.5版本的华为Ideos X5/U8800。

感谢您的帮助:)

P.S.在有人问我为什么要使用这样糟糕的分辨率之前,这就是为什么:这个应用程序将以N秒为间隔捕捉图像。如果应用程序正在运行,比方说,很长一段时间,我会在我的SD卡与大型图像:)

编辑运行的空间:改变了setImgSize() - 方法,现在它看起来像这样:

private void setImgSize() { 
    Log.d(TAG, "+setImgSize"); 
    Camera.Parameters params = camera.getParameters(); 
    params.setPictureSize(WIDTH, HEIGHT); 
    // set jpeg quality to best 
    params.setJpegQuality(100); 

    camera.setParameters(params); 

    params = null; 
    params = camera.getParameters(); 
    Camera.Size size = params.getPictureSize(); 
    Toast.makeText(getApplicationContext(), 
       "Resolution set to "+size.width+"x"+size.height,     
       Toast.LENGTH_SHORT).show(); 
} 

我设置分辨率(320×240),并且当我重新读参数导致阅读是320×240,但是当图像被拍摄分辨率为640x480 :(

回答

1

我想你应该从呼叫getSupportedPictureSizes() 10知道支持哪些图像大小。

然后,您可以选择最接近您实际想要设置的图像大小。