我已经构建了一个自定义相机应用程序,我正在尝试更改所拍摄图像的分辨率。我已经读过这可能取决于Android的手机或版本?
我知道他们是使用setParameters
设置的,但我们不知道如何设置所有手机上的精确解析功能。我希望它有点小,否则我的app力会关闭。当我在640x348使用测试图片时,这种尺寸/分辨率的测试非常完美。
使用setPictureSize
可能更容易吗?
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
camera = Camera.open();
try {
Camera.Parameters parameters = camera.getParameters();
if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) {
parameters.set("orientation", "portrait");
camera.setDisplayOrientation(90);
// Uncomment for Android 2.0 and above
parameters.setRotation(90);
} else {
parameters.set("orientation", "landscape");
camera.setDisplayOrientation(0);
// Uncomment for Android 2.0 and above
parameters.setRotation(0);
}
camera.setParameters(parameters);
camera.setPreviewDisplay(holder);
} catch (IOException exception) {
camera.release();
}
camera.startPreview();
}
答案 0 :(得分:17)
没有setResolution()
,只有setPictureSize()
。使用getSupportedPictureSizes()
上的Camera.Parameters
查找所需尺寸,或使用该信息填充ListView
或Spinner
或其他内容,以便用户选择所需尺寸。 Here is a sample project最近更新为使用getSupportedPictureSizes()
查找支持的最小分辨率并使用它。
答案 1 :(得分:13)
使用高质量来捕捉图片太容易了,在这里您可以设置自己的分辨率:
mCamera = Camera.open();
Camera.Parameters params = mCamera.getParameters();
// Check what resolutions are supported by your camera
List<Size> sizes = params.getSupportedPictureSizes();
// Iterate through all available resolutions and choose one.
// The chosen resolution will be stored in mSize.
Size mSize;
for (Size size : sizes) {
Log.i(TAG, "Available resolution: "+size.width+" "+size.height);
mSize = size;
}
}
Log.i(TAG, "Chosen resolution: "+mSize.width+" "+mSize.height);
params.setPictureSize(mSize.width, mSize.height);
mCamera.setParameters(params);
希望这对你们有所帮助。