2015-11-23 42 views
4

我最近在Camera 2 API上工作,我的設備有16:9的屏幕比例,但是我的相機傳感器是4:3。所以我得到的預覽尺寸是4:3。我想知道有沒有什麼方法可以裁剪尺寸,只顯示16:9的部分?我嘗試了很長時間,並沒有找到任何相機2的幫助。Android Camera 2,如何裁剪預覽尺寸

我目前的相機代碼是類似於camera 2 basic sample

那麼我應該如何裁剪預覽,只顯示紋理視圖上的16:9部分?

謝謝!

+0

對此問題的回答在鏈接中提供[Android 5.0預覽表面上的錯誤裁剪區域和捕獲的靜止圖像](http://stackoverflow.com/questions/26583489/android-5-0-wrong-crop-regions -on-預覽表面和捕獲的靜止圖像) – Chandana

回答

0

您可以創建一個SurfaceTexture,比例爲4:3而不是16:9。

您可以使用該示例項目中的自定義視圖或使用新的ConstraintLayout創建自己的視圖,並將寬度(或反轉)的高度與16:9的比率設置爲1。

然後,當你設置你的紋理大小:

texture.setDefaultBufferSize(width, height) 

你會得到不問題streching,因爲你的質地相同的比例作爲攝像頭輸出。

希望這有助於

0

你必須做 setUpCameraOutputs(int width, int height) 一些調試和檢查你選擇

// Danger, W.R.! Attempting to use too large a preview size could exceed the camera 
// bus' bandwidth limitation, resulting in gorgeous previews but the storage of 
// garbage capture data. 
mPreviewSize = chooseOptimalSize(map.getOutputSizes(SurfaceTexture.class), rotatedPreviewWidth, 
rotatedPreviewHeight, maxPreviewWidth, maxPreviewHeight, largest); 

也許你要好好選擇一些有輸出的大小的一部分。