2014-08-27 6 views
4

WpxHp 미리보기가 있습니다. HxW 그림을 찍고 싶습니다. 따라서 사용자가 찍을 사진의 가로 세로 비율이 같은 미리보기 창을 보길 원합니다. 미리보기 중 하나가 아닙니다. TextureView를 사용하여 미리보기를자를 수 있습니까?Android - TextureView를 사용하여 카메라 미리보기 자르기 방법

- 편집 내가 나를 더 잘 설명 할 수는 TextureView 크기 조정에 대한 cmpensate 할 수 있도록 이미지를 왜곡하는 규모의 매트릭스를 사용하는 것입니다 생각했던

:
를 내가 (이미지) 크기 대상 미리보기를 가질 수 (W, H)이다. 따라서 TextureView의 크기를 (W, H)로 조정해야합니다. 이것은 단순히 행렬 S에 의해 표현 될 수있는 비 균일 선형 스케일링 인 왜곡을 의미합니다. 따라서 뷰의 크기를 조정하기 전에 inv (S)로 이미지의 크기를 조정하면 미리보기의 동일한 원래 크기 (즉, 동일한 종횡비) 그러나 TextureView가 리사이징 된 상태에서 이것은 자르기와 동일합니다. 시도해 보았지만 작동하는 것으로 보입니다. 그러나 대체 방법을 찾고 있습니다.

+1

Grafika에서 카메라 미리보기를 조작하는 예제를 볼 수 있습니다 - "카메라의 텍스처"작업을 참조하십시오. https://github.com/google/grafika – fadden

+0

힌트를 보내 주셔서 감사합니다. 그것은 매우 흥미 롭습니다. 그러나 TextureView 구성 요소를 사용하지 않으며 자르기 아무것도 아닌 것 같습니다. 대신 지원되는 미리보기 크기로 일치 항목을 검색합니다. – LJSilver

+0

슬라이더를 사용하여 "확대/축소"합니다. 소스 이미지를 효과적으로 자르고 현재 프레임 크기와 일치하도록 크기를 조정합니다. TextureView 대 SurfaceView는별로 관련이 없습니다. GLES 출력 일뿐입니다. – fadden

답변

0

내가 할 수있는 유일한 작업은 규모를 추가하는 것입니다.

카메라 출력의 일부로 textureview를 만들고 싶었지만 미리보기가 비뚤어 지 지 않게 만들 수는 없었습니다.

그래서 카메라/화면 비율에 대한 최상의 해상도가 캡처를 시작하기로 결정하면 카메라 캡처 높이와 내가 보여주고 자하는 높이 사이의 비율을 얻습니다.

mPreviewSize = chooseOptimalSize(...); 

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