Android - 如何使用TextureView裁剪相机预览

时间:2014-08-27 15:33:05

标签: android camera crop preview textureview

我有一个WpxHp的预览,我想拍摄HxW图片,因此我希望用户看到一个预览窗口,该窗口具有与我所拍摄的图片相同的宽高比,而不是预览。 如何使用TextureView裁剪预览?

- 编辑

我认为使用缩放矩阵来扭曲图像以便为TextureView调整大小进行补偿,让我更好地解释一下:
我的目标预览(图像)大小为(W,H)。因此,我需要将TextureView的大小调整为(W,H)。这意味着失真只是由矩阵S表示的非均匀线性缩放。因此,如果我在调整视图大小之前使用inv(S)缩放图像,我应该获得预览的相同原始尺寸(因此具有相同的宽高比)但随着TextureView的大小调整,这相当于裁剪。 我试过,它似乎工作,但我正在寻找另一种方式

1 个答案:

答案 0 :(得分:0)

我唯一能做到的并且运作良好的是添加比例。

我想用相机输出的一部分创建一个纹理视图,但是如果不让预览得到破坏,我就无法做到这一点。

所以在我决定相机/屏幕比率开始捕捉的最佳分辨率后,我得到相机捕捉高度和我想要显示的高度之间的比例。

mPreviewSize = chooseOptimalSize(...);

int viewHeight = getDP(this, R.dimen.videoCaptureHeight);
float scaleY = mPreviewSize.getHeight() / viewHeight;
setScaleY(scaleY);