我无法改变Android相机分辨率

时间:2011-07-31 04:10:30

标签: android parameters camera resolution

这是onPreviewFrame方法中的代码。

在surfaceHolder上显示的框架很好。

我已经使用此代码设置了分辨率

 mCameraParameter = mCamera.getParameters();
 mCameraParameter.setPreviewSize(100,150);
 mCameraParameter.setPreviewFrameRate(20);
 mCameraParameter.setPreviewFormat(PixelFormat.JPEG);
 mCamera.setParameters(mCameraParameter);

但是图像得到的图片是640 * 480

我想知道为什么我无法改变预览分辨率。

        public void onPreviewFrame(byte[] data, Camera camera) {
        Log.e("PreviewCallBack", "Preview");


        Camera.Parameters parameters = camera.getParameters();
        Log.e("Picture Size", "width : " + parameters.getPreviewSize().width);
        Log.e("Picture Size", "height : " + parameters.getPreviewSize().height);
        Log.e("Array Size", "data.length : " + data.length);
        YuvImage image = new YuvImage(data, parameters.getPreviewFormat(),
                parameters.getPreviewSize().width,parameters.getPreviewSize().height, null);


        File file = new File(Environment.getExternalStorageDirectory()
                .getPath() + "/"+/*System.currentTimeMillis()*/"out.jpg");

        FileOutputStream filecon = null;

        try {
            filecon = new FileOutputStream(file);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }


        image.compressToJpeg(
                new Rect(0, 0, image.getWidth(), image.getHeight()), 90,
                filecon);
    }
};

2 个答案:

答案 0 :(得分:2)

也许您正在尝试设置不受支持的预览尺寸。更好地调用“ getSupportedPreviewSizes()”并在调用 setPreviewSize()之前检查设备是否支持您要设置的预览尺寸。

答案 1 :(得分:1)

我认为你应该调用setPictureSize()来设置图片本身的大小(而不是预览)。