【问题标题】:1:1 Aspect Ratio in CameraXCameraX 中的 1:1 纵横比
【发布时间】: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


【解决方案1】:

您可以not the only one 投诉。 1:1 支持是still not very good

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

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

【讨论】:

    猜你喜欢
    • 2019-09-04
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 2018-07-19
    • 1970-01-01
    相关资源
    最近更新 更多