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 图像?
您提议的缓解措施看起来很合理。4:3 在我见过的所有设备上都能提供高质量。您始终可以使用一些非透明视图覆盖预览,以提供方形预览的外观。
GitHub 上有一个示例,说明如何使用带有裁剪帧的 MediaCodec 生成方形视频。