2012-07-20 105 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知道支持哪些圖像大小。

然後,您可以選擇最接近您實際想要設置的圖像大小。