好的,制作相机应用程序和一部分正在选择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 :(
答案 0 :(得分:1)
我认为您应该从getSupportedPictureSizes()
致电Camera.Parameters
以了解支持的图片尺寸。
然后,您可以选择最接近您实际想要设置的图像尺寸。