【问题标题】:Crop the preview image using Android Camera2 API使用 Android Camera2 API 裁剪预览图像
【发布时间】:2019-03-15 01:07:03
【问题描述】:

目标是在表面上裁剪来自 Camera2 api 捕获会话的帧的预览,而不是裁剪将自行创建的视频。

例如,我的流分辨率为 1920x1080 (16:9),屏幕尺寸(例如)2000x3000 (2:3 -> 6:916:24,让我们选择例如第二个变体),所以我希望我的视频具有原始流分辨率 - 1920x1080,但我的预览可以填充所有可用空间而不调整 View 大小 - 所以它应该是 5333x3000(只是碰撞使用与流分辨率相同的纵横比填充矩形区域的大小),然后将“与此表面的分辨率对应的帧数据(我想是 5333x2000)”“剪切”为 2000x3000(只是从顶部和底部删除 (5333 - 2000) / 2)。

有可能吗?

P.S.:不好的是google sample for camera2 api 调整了视图本身的大小,而这些“空白区域”对我来说是不想要的。我还没有找到任何与我的问题密切相关的东西。

P.S.S.:AFAIU this SO solution 裁剪来自相机本身的帧,但我需要我的视频保持原始分辨率。

【问题讨论】:

    标签: android android-camera2


    【解决方案1】:

    如果您使用的是 TextureView,您可能可以调整其 transform matrix 以放大预览(并在此过程中切断边缘)。读取现有矩阵,修正纵横比并放大,然后save the new matrix

    但请注意,保存与您向用户显示的内容不同的视野可能会让您产生负面反应 - 请使用预览框出他们想要记录的内容,以及您正在保存的内容有多余的东西,录制的视频不符合预期。当然,也许这与您的用例无关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      相关资源
      最近更新 更多