簡體   English   中英

SurfaceTexture大小,如何定義?

[英]SurfaceTexture size, how is it defined?

我正在使用SurfaceTexture繪制相機的預覽,需要了解紋理大小+在此過程中會發生什么

假設按設備支持的相機預覽大小為:

1280 720、1024 576、960 720、800 600、800 480、768 576、736 552等。

顯然,這些大小與標准紋理大小2048x2048、2048x1024、1024x1024之間不匹配...

我可以想到以下情況,但我不確定:

1,表面紋理的大小取決於所選預覽大小,例如1280 x 720,但這不是pow2格式,可能意味着兼容性問題

1,表面紋理的大小取決於所選預覽大小,例如1280 x 720,但這不是pow2格式,可能意味着兼容性問題

2,表面紋理包含在pow2格式的下一個尺寸內,未轉換,例如1280x720將包含在2048 x 1024紋理內,沒有拉伸,部分紋理未使用

在圖2中,表面紋理包含在pow2格式的下一個尺寸內,未變換,例如1280x720將包含在2048 x 1024紋理內,沒有拉伸,部分紋理未使用。

3,將表面紋理調整為適合下一個pow2紋理的大小(可能甚至縮小),圖像比例丟失,並且質量下降。例如1280 x 720橫跨2048 x 1024。

3,將表面紋理調整為適合下一個pow2紋理的大小(可能甚至縮小),圖像比例丟失,並且質量下降。 例如1920 x 1080延伸到2048 x 2048。

4,還有其他可能性嗎?

相機預覽如何映射到紋理,最后如何定義紋理大小?

實際上,在預覽時,您可以將緩沖區設置為“保持”“大”分辨率。

Size mPreviewSize;

CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE);

String cameraId = manager.getCameraIdList()[0];
CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);

StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
mPreviewSize = map.getOutputSizes(SurfaceTexture.class)[0];

SurfaceTexture texture = mTextureView.getSurfaceTexture();
// We configure the size of default buffer to be the size of camera
// preview we want.
texture.setDefaultBufferSize(mPreviewSize.getWidth(),mPreviewSize.getHeight());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM