1:1 CameraX 中的纵横比
1:1 Aspect Ratio in CameraX
我一直在尝试在我的 android 应用程序中使用 CameraX,并希望预览和输出图像都是高质量 1:1 宽高比图像。
我尝试了以下代码来设置图像和预览配置
PreviewConfig previewConfig = new PreviewConfig.Builder()
.setTargetAspectRatio(new Rational(1, 1))
.build();
--
ImageCaptureConfig imageCaptureConfig = new ImageCaptureConfig.Builder()
.setTargetAspectRatio(new Rational(1, 1))
.setCaptureMode(ImageCapture.CaptureMode.MIN_LATENCY)
.build();
根据开发人员指南,此代码将选择硬件在该宽高比下可以提供的最佳分辨率。
虽然这在某些设备上运行良好,但在某些设备上输出图像分辨率低至 280X280 像素。
这似乎不是该设备上硬件的有效纵横比。
我可以尝试什么解决方法?
我的想法是,我认为每个设备都会支持 4:3 纵横比。
我可以裁剪输出图像,但预览呢?我们可以裁剪纹理视图吗?
或者我可以在取景器顶部放置一个简单的黑色矩形视图,看起来像是 1:1 图片吗?
你是not the only one to complain. 1:1 support is still not very good.
您提出的缓解措施看起来很合理。 4:3 在我见过的所有设备上都能提供高质量的服务。您始终可以用一些非透明视图覆盖预览,以提供方形预览的外观。
GitHub 上有一个示例,您可以如何 use MediaCodec with cropped frames to produce a square video。
我一直在尝试在我的 android 应用程序中使用 CameraX,并希望预览和输出图像都是高质量 1:1 宽高比图像。 我尝试了以下代码来设置图像和预览配置
PreviewConfig previewConfig = new PreviewConfig.Builder()
.setTargetAspectRatio(new Rational(1, 1))
.build();
--
ImageCaptureConfig imageCaptureConfig = new ImageCaptureConfig.Builder()
.setTargetAspectRatio(new Rational(1, 1))
.setCaptureMode(ImageCapture.CaptureMode.MIN_LATENCY)
.build();
根据开发人员指南,此代码将选择硬件在该宽高比下可以提供的最佳分辨率。 虽然这在某些设备上运行良好,但在某些设备上输出图像分辨率低至 280X280 像素。 这似乎不是该设备上硬件的有效纵横比。
我可以尝试什么解决方法? 我的想法是,我认为每个设备都会支持 4:3 纵横比。
我可以裁剪输出图像,但预览呢?我们可以裁剪纹理视图吗?
或者我可以在取景器顶部放置一个简单的黑色矩形视图,看起来像是 1:1 图片吗?
你是not the only one to complain. 1:1 support is still not very good.
您提出的缓解措施看起来很合理。 4:3 在我见过的所有设备上都能提供高质量的服务。您始终可以用一些非透明视图覆盖预览,以提供方形预览的外观。
GitHub 上有一个示例,您可以如何 use MediaCodec with cropped frames to produce a square video。