Android Camera2 미리보기가 늘어났습니다.

Sep 13 2020

저는 Camera2 API를 배우려고하는데 사진을 찍기위한 간단한 카메라 앱을 만들었지 만 제가 직면 한 문제는 미리보기가 일부 해상도로 늘어난다는 것입니다. 여러 게시물을 살펴본 결과 모두 내 종횡비가 잘못되었을 수 있다고 제안했지만 Google에서 권장하는 AutoFitTextureView를 올바른 종횡비로 사용했지만 미리보기가 늘어났습니다. 플레이 스토어에서 오픈 소스 카메라 앱을 다운 받았는데 그 중 전면 카메라 (OPEN CAMERA 제외)에도 같은 문제가 있었지만 재미있는 부분은 다른 기기에서 같은 앱을 사용했고 미리보기가 완벽했다는 것입니다. 그래서 마침내 다른 해상도로 내 앱을 테스트하고 결과를 관찰하기로 결정했지만 어떤 패턴도 찾을 수 없었습니다.

my device display size is 720x1280
Front camera results: 
SurfaceTexture        AutoFitTextureView         Result
buffer size           size       
2576x1932             720x960                    Normal
2560x1440             720x1280                   Normal
2048x1536             720x960                    Normal
2048x1152             720x1280                   Normal
1920x1920             720x720                    Normal
1920x1080             720x1280                   Normal
1440x1080             720x960                    Horizontally Stretched
1280x720              720x1280                   Horizontally Stretched
1072x1072             720x720                    Normal
960x720               720x960                    Normal
720x480               720x1080                   Horizontally Stretched
640x480               720x960                    Horizontally Stretched
352x288               720x880                    Normal
320x240               720x960                    Normal
256x144               720x1280                   Horizontally Stretched
176x144               720x880                    Normal

답변

1 WebDiva Oct 04 2020 at 22:25

Camera2는 초보자로서 배우기가 매우 어렵습니다. 대부분의 작업을 수행하는 카메라 라이브러리 사용을 고려하십시오. 내가 찾은 최고 중 하나는 다음과 같습니다.https://camerakit.io/docs. 정말 쉽고 지금 당장 직면하고있는 모든 문제를 해결할 것입니다.
(저는이 프로젝트를 소유하고 있지 않으며 어쨌든 홍보하지 않습니다. camera2 API를 사용 해봤는데 정말 힘들 기 때문에 더 쉬운 솔루션을 제안했습니다.

EddyTalvala Oct 05 2020 at 07:13

실제로 이것이 장치 버그 일 수 있습니다. 카메라 구현이 전체 센서 크기에서 잘못 확장되고 있습니다. 대부분의 앱에서 사용하지 않는 비정상적인 크기에서 더 일반적으로 발생합니다.

귀하의 경우, 아마도 1440x1080이 카메라 파이프 라인의 일부에 의해 1920x1080처럼 취급되어 늘어나는 결과 일 것입니다. 때로는 다른 해상도 (또는 때로는 동일한 해상도)에서 두 번째 출력 (예 : JPEG)을 추가하여 '고정'할 수 있습니다.

물론 코드 (또는 AutoFitTextureView)에 논리 버그가있을 수도 있습니다. 그러나 그것들은 유용한 조언을 제공하기 어렵습니다. 모든 레이아웃을 확인하고 수학을 단계적으로 확장하는 문제입니다.

Google의 공식 카메라 지원 라이브러리 인 CameraX를 사용해 볼 수도 있습니다 . 베타 버전이며 미리보기, 스틸 캡처 및 이미지 분석과 같은 기본 사용 사례에서 잘 작동합니다.