【发布时间】:2014-05-21 06:31:19
【问题描述】:
我正在开发一个安卓相机应用程序。我正在为其开发应用程序的设备具有以下受支持的预览尺寸(按降序排列)
1920 x 1080
1280 x 720
1088 x 1920
960 x 720
...
并且支持的图片尺寸是
2592 – 1944
2592 – 1728
2304 – 1296
...
等等。我应该从相机硬件中拍摄出最好的照片。我已将相机参数设置如下
private void setCameraParams(Parameters params) {
params.set("s3d-prv-frame-layout", "none");
params.set("s3d-cap-frame-layout", "none");
params.set("iso", "auto");
params.set("contrast", 100);
params.set("brightness", 50);
params.set("saturation", 100);
params.set("sharpness", 100);
params.setAntibanding("auto");
params.setPictureFormat(ImageFormat.JPEG);
params.set("jpeg-quality", 100);
// params.setJpegQuality(CameraProfile.getJpegEncodingQualityParameter(0, CameraProfile.QUALITY_HIGH));
if (params.isZoomSupported())
params.setZoom(0);
setPreviewSize(params);
setPictureSize(params);
camera.setParameters(params);
}
方法setPreviewSize() 和setPictureSize() 按降序对支持的尺寸进行排序,然后选择最靠前的尺寸(最大、最佳)。仍然当我拍照并将该文件拉到我的系统上时,我看到的尺寸是1920 x 1080,这与我设置的previewSize 相同。问题是当我从默认相机拍摄照片并将文件拉到我的系统上时,大小为2592 x 1944,这是最大图片大小。我怎样才能从我的相机中以这种尺寸的图像拍摄照片?任何需要添加的参数,我都尝试了各种参数的排列和组合,但徒劳无功。任何帮助将不胜感激。
更新:为setPictureSize() method 添加代码
private void setPictureSize(Camera.Parameters params) {
if (sizes == null || resStrings == null) {
sizes = params.getSupportedPictureSizes();
if (sizes != null && !sizes.isEmpty()) {
Collections.sort(sizes, new Comparator<Camera.Size>() {
@Override
public int compare(Camera.Size lhs, Camera.Size rhs) {
if ((lhs.width > rhs.width) && (lhs.height >= rhs.height))
return -1;
else if ((rhs.width > lhs.width) && (rhs.height >= lhs.height))
return 1;
else if ((lhs.width == rhs.width)) {
if (lhs.height > rhs.height)
return -1;
else if (rhs.height > lhs.height)
return 1;
else
return 0;
} else
return 0;
}
});
int i = 0;
resStrings = new String[sizes.size()];
for (Camera.Size temp : sizes) {
resStrings[i] = temp.width + " x " + temp.height;
i++;
Log.d("PICRES", temp.width + " x " + temp.height);
}
params.setPictureSize(sizes.get(getCameraResAtPosition(cameraResSelected)).width,
sizes.get(getCameraResAtPosition(cameraResSelected)).height);
}
} else {
params.setPictureSize(sizes.get(getCameraResAtPosition(cameraResSelected)).width,
sizes.get(getCameraResAtPosition(cameraResSelected)).height);
}
}
【问题讨论】:
标签: android android-camera resolution