【发布时间】:2020-01-26 23:08:46
【问题描述】:
我一直在尝试在我的 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 图像?
【问题讨论】:
-
您无法使用相机 API 实现 1:1 相机图片或视频,您必须使用 FFMPEG 之类的库,或者如果您只捕获图片,您必须在相机视图上叠加视图以假装 1:1然后以 1:1 裁剪 4:3 图像
-
你是怎么解决这个问题的? @karatuno
-
我做了与我在问题中提出的完全相同的技巧。我在取景器顶部使用了一个动态的黑色矩形视图,看起来像是 1:1 图像,并在输出时裁剪了图像。我知道这不是一个好方法,应该有更好的方法来解决这个问题。但我找不到一个,所以我用 hack 的方式做了。如果您确实找到了更好的技术或更好的技巧,请务必回答这个问题。
标签: java android android-layout android-camera androidx