CameraX 中的 1:1 纵横比

kar*_*uno 4 java android android-layout android-camera androidx

我一直在尝试在我的 android 应用程序中使用 CameraX,并希望预览和输出图像都是高质量的 1:1 纵横比图像。我尝试了以下代码来设置图像和预览配置

PreviewConfig previewConfig = new PreviewConfig.Builder()
                .setTargetAspectRatio(new Rational(1, 1))
                .build();
Run Code Online (Sandbox Code Playgroud)

——

        ImageCaptureConfig imageCaptureConfig = new ImageCaptureConfig.Builder()
                .setTargetAspectRatio(new Rational(1, 1))
                .setCaptureMode(ImageCapture.CaptureMode.MIN_LATENCY)
                .build();
Run Code Online (Sandbox Code Playgroud)

根据开发人员指南,此代码将选择硬件可以在该宽高比下提供的最佳分辨率。尽管这在某些设备上运行良好,但在某些设备上,输出图像分辨率低至 280X280 像素。看起来这不是该设备上硬件的有效纵横比。

我可以尝试什么作为解决方法?我的想法是,我认为每个设备都将支持 4:3 的纵横比。

我可以裁剪输出图像,但是预览呢。我们可以裁剪纹理视图吗?

或者我可以在取景器顶部放置一个简单的黑色矩形视图,看起来像是 1:1 图像?

Ale*_*ohn 5

不是唯一一个抱怨的人。1:1的支持还是不太好

您提议的缓解措施看起来很合理。4:3 在我见过的所有设备上都能提供高质量。您始终可以使用一些非透明视图覆盖预览,以提供方形预览的外观。

GitHub 上有一个示例,说明如何使用带有裁剪帧的 MediaCodec 生成方形视频