Android,相机和放大器“实际”支持图像大小

时间:2012-07-20 07:06:39

标签: android image camera resolutions

好的,制作相机应用程序和一部分正在选择img大小,完成以下代码:

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();
}

WIDTH和HEIGHT是从settingsactivity返回的值,我得到一个很好的Toast告诉分辨率设置为320x240。但是当捕获图像时,分辨率为640x480! 好的,test2。我们将分辨率设置为640x480。 Toast告诉分辨率为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();
}

我设置分辨率(320x240),当我从重读参数读取时,结果是320x240,但是当捕获图像时,分辨率为640x480 :(

1 个答案:

答案 0 :(得分:1)

我认为您应该从getSupportedPictureSizes()致电Camera.Parameters以了解支持的图片尺寸。

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