我正在尝试在android中创建自定义相机。我想设置要拍摄的照片的确切尺寸。我希望确切的大小是用户在预览中看到的。如何设置确切的大小? (按尺寸我的意思是宽度和高度:尺寸)
我在android literatures中找到以下措辞:
如果要为相机预览设置特定尺寸,请设置此项 在上面的注释中指出的surfaceChanged()方法中。什么时候 设置预览大小,您必须使用来自的值 getSupportedPreviewSizes()。不要在中设置任意值 setPreviewSize()方法。
此段落是否指明了我需要做什么或与其他内容有关?在任何情况下,有没有人有任何代码片段,我将如何设置大小?说我想要一个方形图像,我如何指定它以使预览和最终图像都是正方形?
现在我的surfaceChanged
方法如下
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
if (mCamera != null) {
try {
mCamera.setPreviewDisplay(holder);
if (mIsCapturing) {
mCamera.startPreview();
}
} catch (IOException e) {
Toast.makeText(CameraActivity.this, "Unable to start camera preview.", Toast.LENGTH_LONG).show();
}
}
}
感谢您的帮助。
另外,如果它很重要,我的布局是
<FrameLayout
android:id="@+id/camera_frame"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<ImageView
android:id="@+id/camera_image_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<SurfaceView
android:id="@+id/preview_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
答案 0 :(得分:0)
Parameters parameters = camera.getParameters();
for (Camera.Size previewSize: camera.getParameters().getSupportedPreviewSizes())
{
// if the size is suitable for you, use it and exit the loop.
parameters.setPreviewSize(previewSize.width, previewSize.height);
break;
}
camera.setParameters(parameters);
camera.startPreview();
对于方形预览和最终图像,我是如何使用其他视图隐藏/阻止部分预览以使其平方,并在保存拍摄的图像时相应地剪切位图。
不漂亮,但到目前为止,我还没有找到更好的解决方案。