我想使用
从我的应用程序中拍照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);
}
问题是我仍然得到更大的图像。但这不是实际问题:
当我使用预览时,就像这样
不允许用户旋转预览,放大/缩小等。
有没有办法使用自定义参数的实际相机预览?
答案 0 :(得分:0)
某些相机开始以横向模式拍摄图像,有些是在肖像模式下。这可以在sdk级别修复,在运行时会有点费用,对于cpu,但可以完成。
您需要更小的尺寸:
-at sdk level实现一个管道,你将捕获的图像缩小到原来的10-15%,它会耗尽电池,但可以完成。 - 在ndk级别,你必须为每个支持的摄像头实现一个自定义驱动程序...对于这个自定义驱动程序,你也将实现一个自定义软件,一切都很好。