如何在android中设置相机预览的大小

问题描述 投票:0回答:1

我正在尝试在 android 中创建一个自定义相机。我想设置要拍摄的照片的确切尺寸。我希望用户在预览中看到的确切尺寸。我如何设置确切的尺寸? (尺寸是指宽度和高度:尺寸)

我在android 文献中发现以下措辞:

如果您想为相机预览设置特定尺寸,请设置此项 在 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>
android camera size android-camera surfaceview
1个回答
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();

对于方形预览和最终图像,我的做法是使用其他视图隐藏/阻止预览的一部分以使其成为方形,并在保存拍摄的图像时相应地剪切位图。

不太漂亮,但到目前为止我还没有找到更好的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.