更改默认相机属性

时间:2013-04-18 07:44:36

标签: android camera

我想使用

从我的应用程序中拍照
Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(camera, TAKE_PICTURE);

并将其发送到网络服务器。但是,由于网络服务器将其压缩为 150x150图像 大小不超过50 kb ,我不需要采取一些 3264x2448图像 大小~2 mb 因为发送转移需要花费很多时间。我想拍一张最小尺寸的照片。

那么,有没有办法向相机询问特定尺寸的图像?

我尝试使用Camera API并更改其属性:

private Camera mCamera;

Camera.Size pictureSize = getSmallestPictureSize(mCamera
                .getParameters());
        if (pictureSize != null) {
            mCamera.getParameters().setPictureSize(pictureSize.width,
                    pictureSize.height);
        }

private Camera.Size getSmallestPictureSize(Camera.Parameters parameters) {
        Camera.Size result = null;

        for (Camera.Size size : parameters.getSupportedPictureSizes()) {
            if (result == null) {
                result = size;
            } else {
                int resultArea = result.width * result.height;
                int newArea = size.width * size.height;

                if (newArea < resultArea) {
                    result = size;
                }
            }
        }

        return (result);
}

问题是我仍然得到更大的图像。但这不是实际问题:

当我使用预览时,就像这样

enter image description here

不允许用户旋转预览,放大/缩小等。

有没有办法使用自定义参数的实际相机预览?

1 个答案:

答案 0 :(得分:0)

某些相机开始以横向模式拍摄图像,有些是在肖像模式下。这可以在sdk级别修复,在运行时会有点费用,对于cpu,但可以完成。

您需要更小的尺寸:

-at sdk level实现一个管道,你将捕获的图像缩小到原来的10-15%,它会耗尽电池,但可以完成。 - 在ndk级别,你必须为每个支持的摄像头实现一个自定义驱动程序...对于这个自定义驱动程序,你也将实现一个自定义软件,一切都很好。