2014-08-27 35 views
4

我有一個預覽是WpxHp,我想拍攝HxW圖片,因此我希望用戶看到一個預覽窗口,它具有與我將拍攝的圖片相同的寬高比,而不是預覽中的一個。 如何使用TextureView裁剪預覽?Android - 如何使用紋理裁剪相機預覽

- 編輯

了我認爲是用一個尺度矩陣在扭曲的形象,以cmpensate爲TextureView調整大小,讓我更好地解釋:
我有一個目標預覽(圖)大小是(W,H)。因此我需要將TextureView調整爲(W,H)。這意味着失真僅僅是由矩陣S表示的非均勻線性縮放。因此,如果我在調整視圖大小之前用inv(S)縮放圖像,我應該獲得預覽的相同原始尺寸(因此具有相同的縱橫比)但TextureView調整大小,這相當於一個作物。 我試過了,它似乎工作,但我正在尋找一種替代方式

+1

您可以看到在Grafika中操作相機預覽的示例 - 請參閱「來自相機的紋理」活動。 https://github.com/google/grafika – fadden 2014-08-27 16:04:50

+0

感謝您的提示!這很有趣。然而,它不使用TextureView組件,它看起來不會修剪任何東西,而是在支持的預覽尺寸中搜索匹配項 – LJSilver 2014-08-27 17:13:32

+0

使用滑塊「縮放」。它有效地裁剪源圖像,並將其縮放以匹配當前幀大小。 TextureView與SurfaceView並不真正相關;它只是GLES輸出。 – fadden 2014-08-27 20:29:02

回答

0

我已經設法做的唯一,它工作良好的是添加一個規模。

我想用相機輸出的一部分創建一個紋理視圖,但是我不能在不讓預覽縮小的情況下做到這一點。

因此,在決定相機/屏幕比例的最佳分辨率以開始拍攝後,我可以獲得相機拍攝高度和我想要顯示的高度之間的比例。

mPreviewSize = chooseOptimalSize(...); 

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