java - 1 :1 Aspect Ratio in CameraX

标签 java android android-layout android-camera androidx

我一直在尝试在我的 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 的纵横比。

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

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

最佳答案

你是 not the only one提示。 1:1 支持是 still not very good .

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

GitHub上有一个例子你可以如何use MediaCodec with cropped frames to produce a square video .

关于java - 1 :1 Aspect Ratio in CameraX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58120729/

相关文章:

java - Java中如何求nxn矩阵每一列的和?

c# - 在 Visual Studio 17 Xamarin Android 上部署失败

android - 8.9 英寸平板电脑上没有静态尺寸且没有低分辨率图像的 LinearLayout

android - ProgressDialog - 如何删除数字

java - onActivityResult()之后动态添加的imageView消失

java - 从 Android Activity 类调用接口(interface)方法

java - JavaFX 中的透明 Accordion 背景

java - 映射 Spring 形状

Java多线程意外结果

android - 如何阻止我的 recyclerview 允许向左滑动而只允许向右滑动?