gpt4 book ai didi

Android 相机预览映射到最终图片

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:43:47 27 4
gpt4 key购买 nike

我们一直在构建一个自定义的 Android 相机 Activity ,其中有一个矩形叠加在相机预览中以及拍摄照片时(在按下按钮),我们要裁剪相应的矩形区域的最终图像。问题是我们还没有弄清楚android是如何将预览屏幕映射到最终图像。

我们尝试了以下公式,但仅在某些情况下有效:

令 x 和 y 为矩形左上角的坐标为显示在相机预览中。

设preview_width和preview_height为相机的宽高预习。这些是使用 getBestPreviewSize() 函数获取的,该函数循环通过支持的预览尺寸并选择较大的尺寸。假设它们是 1280 和 720。

令picture_width和picture_height为最终的宽高相机支持的图片。出于我们的目的,假设这是 1632 *1224(在索尼爱立信 XPERIA 上,这对应于 2 MP)。

我们想要找到 x_map, y_map 它们是裁剪矩形的 x 和 y最终图像。

然后以此类推,我们使用的公式是:

x_map = picture_width * x/preview_width;y_map = picture_height * y/preview_height;

但是,这似乎并不适用于所有情况。我们发现当手机的屏幕尺寸与预览尺寸相似,那么这个公式几乎可以工作(大约,有一个小错误)。

但是对于其他情况,例如 Sony XPERIA 手机,屏幕尺寸为:宽度:480和高度:854,公式失败。

例如,对于x=50,则x_map = 1632 * 50/1280 = 63.75然而,这个数字,如从最终裁剪的矩形区域所示图片,并不真正对应于预览区域中的矩形。它太远了。我们的公式没有考虑屏幕尺寸,尽管尝试修改它以解释它们,但还没有产生了任何理想的结果。

我们怀疑预览尺寸和最终图片之间的映射不知何故考虑到屏幕尺寸,但还没有弄清楚到底是怎么回事,因为没有关于它的文档并且在广泛搜索之后网络上的答案没有任何相关内容出现。我们相信有一个我们需要考虑的某些比例因子和纵横比在应用类比规则之前,公式可以正常工作。

你知道上面的正确公式吗?

最佳答案

首先,获取 Camera.getSupportedPictureSizes 返回的最大图片尺寸 - 这是相机的原始分辨率,您可以从中确定原始纵横比。任何具有不同宽高比的图片尺寸或预览尺寸都将根据“Matrix.ScaleToFit.CENTER”进行裁剪。

另见: https://stackoverflow.com/a/18159351/994834

关于Android 相机预览映射到最终图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15581187/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com