Android Camera2 미리보기가 늘어났습니다.
저는 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
답변
Camera2는 초보자로서 배우기가 매우 어렵습니다. 대부분의 작업을 수행하는 카메라 라이브러리 사용을 고려하십시오. 내가 찾은 최고 중 하나는 다음과 같습니다.https://camerakit.io/docs. 정말 쉽고 지금 당장 직면하고있는 모든 문제를 해결할 것입니다.
(저는이 프로젝트를 소유하고 있지 않으며 어쨌든 홍보하지 않습니다. camera2 API를 사용 해봤는데 정말 힘들 기 때문에 더 쉬운 솔루션을 제안했습니다.
실제로 이것이 장치 버그 일 수 있습니다. 카메라 구현이 전체 센서 크기에서 잘못 확장되고 있습니다. 대부분의 앱에서 사용하지 않는 비정상적인 크기에서 더 일반적으로 발생합니다.
귀하의 경우, 아마도 1440x1080이 카메라 파이프 라인의 일부에 의해 1920x1080처럼 취급되어 늘어나는 결과 일 것입니다. 때로는 다른 해상도 (또는 때로는 동일한 해상도)에서 두 번째 출력 (예 : JPEG)을 추가하여 '고정'할 수 있습니다.
물론 코드 (또는 AutoFitTextureView)에 논리 버그가있을 수도 있습니다. 그러나 그것들은 유용한 조언을 제공하기 어렵습니다. 모든 레이아웃을 확인하고 수학을 단계적으로 확장하는 문제입니다.
Google의 공식 카메라 지원 라이브러리 인 CameraX를 사용해 볼 수도 있습니다 . 베타 버전이며 미리보기, 스틸 캡처 및 이미지 분석과 같은 기본 사용 사례에서 잘 작동합니다.