Java CameraX中的1:1纵横比
我一直在尝试在android应用程序中使用CameraX,希望预览和输出图像都是高质量的1:1纵横比图像。 我尝试了以下代码来设置图像和预览配置Java CameraX中的1:1纵横比,java,android,android-layout,android-camera,androidx,Java,Android,Android Layout,Android Camera,Androidx,我一直在尝试在android应用程序中使用CameraX,希望预览和输出图像都是高质量的1:1纵横比图像。 我尝试了以下代码来设置图像和预览配置 PreviewConfig previewConfig = new PreviewConfig.Builder() .setTargetAspectRatio(new Rational(1, 1)) .build(); -- 根据开发人员指南,此代码将选择硬件在该纵横比下能够提供的最佳分
PreviewConfig previewConfig = new PreviewConfig.Builder()
.setTargetAspectRatio(new Rational(1, 1))
.build();
--
根据开发人员指南,此代码将选择硬件在该纵横比下能够提供的最佳分辨率。
虽然这在某些设备上运行良好,但在某些设备上,输出图像分辨率低至280X280像素。
看起来这不是该设备上硬件的有效纵横比
我可以尝试什么解决方法?
我的想法是,我认为每台设备都支持4:3的纵横比
我可以裁剪输出图像,但是预览呢。我们可以裁剪纹理视图吗
或者我可以在取景器顶部放一个简单的黑色矩形视图,看起来像是1:1的图像吗?你应该抱怨。支持率为1:1
你提出的缓解措施看起来是合理的。4:3在我见过的所有设备上提供高质量。始终可以使用一些不透明视图覆盖预览,以提供方形预览的外观
GitHub上有一个例子说明了如何实现。使用摄像头API无法实现1:1的摄像头图片或视频您必须使用FFMPEG之类的库,或者如果您只拍摄图片,则必须在摄像头视图上覆盖一个视图,假装为1:1,然后以1:1的比例裁剪4:3的图像。您是如何解决此问题的@karatunoI做了与我在问题中提出的完全相同的黑客行为。我在取景器顶部使用了一个动态的黑色矩形视图,看起来像是1:1的图像,并在输出时对图像进行了裁剪。我知道这不是一个好办法,应该有更好的办法。但是我找不到一个,所以我用黑客的方式做了。如果你找到了更好的技术或更好的黑客,请一定要回答这个问题。
ImageCaptureConfig imageCaptureConfig = new ImageCaptureConfig.Builder()
.setTargetAspectRatio(new Rational(1, 1))
.setCaptureMode(ImageCapture.CaptureMode.MIN_LATENCY)
.build();