目前,我正在尝试在摩托罗拉Droid手机上设置相机以拍摄与屏幕尺寸(854 x 480像素)匹配的图像,并且尝试通过相机的参数来完成以下操作:

Camera.Parameters parameters = this.mCamera.getParameters();
Log.i(TAG, "CAMERA SIZE: (" + this.mCameraView.getWidth() + ", " + this.mCameraView.getHeight() + ")");
parameters.setPictureSize(this.mCameraView.getWidth(), this.mCameraView.getHeight());
this.mCamera.setParameters(parameters);
this.mCamera.takePicture(null, null, this);

我的 Activity 实现了onPictureTaken的Camera.PictureCallback方法(不包括日志调用),因此,当调用takePicture方法时,它将运行此方法:
@Override
public void onPictureTaken(byte[] data, Camera camera) {
    Bitmap image = BitmapFactory.decodeByteArray(data, 0, data.length);
    //Size imageSize = camera.getParameters().getPictureSize();
    //image = Bitmap.createBitmap(image, 0, 0, imageSize.width, imageSize.height);
    this.mCameraView.setBackgroundDrawable(new BitmapDrawable(image));
}

但是由于某种原因,我的相机正在以1280 x 960的速度拍摄照片。相机可以以这种最小尺寸拍摄图像吗?从通话记录中,我可以看到相机的参数仍然设置为854 x 480,但图像始终显示为1280 x960。我解码图像是否不正确,相机参数设置不正确还是我做错了什么吗?

在此先感谢您提供的任何帮助!

问候,天球。

最佳答案

是的,提供了一些方法来获取相机支持的照片尺寸。
相机的参数类(通过相机提供受支持的图片大小)的方法是getSupportedPictureSizes();。
使用此方法,您可以按相机获取支持的尺寸。
该代码段如下所示:-

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

我希望这能帮到您。

谢谢
纳瓦卜

10-05 20:17
查看更多