我想从我的应用程序中使用
Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(camera, TAKE_PICTURE);
并将其发送到网络服务器。但由于网络服务器将其压缩为大小不超过 50 kb的150x150 图像,因此我不需要拍摄一些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);
}
问题是我仍然得到更大的图像。但这不是实际问题:
当我为此使用预览时,就像这样
不允许用户旋转预览、放大/缩小等。
有没有办法使用带有自定义参数的实际相机预览?