드로이드 장치 - 카메라에서 캡처 된 이미지를 회전하지 않습니까? (카메라. 파라미터)

StackOverflow https://stackoverflow.com/questions/1934378

  •  20-09-2019
  •  | 
  •  

문제

이 카메라 코드를 사용하여 카메라에 캡처 된 이미지 데이터를 회전하도록 요청합니다.

Camera.Parameters params = camera.getParameters();
params.set("rotation", 90);
camera.setParameters(params);

이것은 드로이드를 제외한 모든 전화기에서 작동하는 것 같습니다. 다른 사람이 이것을 본 적이 있습니까? 이미지 데이터는 항상 풍경이지만 드로이드의 기본 카메라 앱은 초상화 이미지를 생성합니다.

드로이드가 새로운 것을 존중할 것인지 궁금합니다. Camera.Parameters.setRotation() 방법이지만 API 레벨 5에서만 사용할 수있는 것 같습니다.

도움이 되었습니까?

해결책

회전은 SetRotation 문서에 설명 된대로 JPEG Exif 헤더에 저장 될 수 있습니다. 드로이드에서는 실제로 그렇습니다. Jhead와 같은 JPEG 헤더 읽기 도구를 사용하여이를 확인할 수 있습니다. 당신은 또한 사용할 수 있습니다 Exifinterface API 프로그램의 방향 태그를 읽으려면

다른 팁

setRotation 또한 Nexus One에서 나에게 효과가 없었지만 Android 카메라 앱 자체의 예를 따라 이미지 회전이 작동했습니다.
소스 코드는 여기에서 사용할 수 있습니다.https://android.googlesource.com/platform/packages/apps/camera

카메라로 시작하지만 imageManager.java, util.java 및 기타 파일도 볼 것입니다.

기본 아이디어는 오리엔테이션 변경을 듣고 사진을 찍을 때 방향이 무엇인지 포착하는 것입니다. 그런 다음 콜백에서 그림 바이트를 얻으면 비트 맵을 조작하여 비트 맵에서 회전합니다. 그런 다음 회전 된 비트 맵을 JPEG로 다시 변환하십시오. 완료되면이 회전을 위해 카메라 앱에서 충격적인 코드를 복사해야했습니다.

드로이드는 각각 API 레벨 5와 6 인 Android 2.0 (현재 2.0.1)을 실행합니다.

따라서 드로이드는 회전을 위해 (더 현명한) 2.0+ API 만 존중할 수 있습니다.

그러나 귀하의 관심사는 다양한 장치 유형 및 OS 버전에 걸쳐 호환성이 있다고 생각하므로 OS 버전을 감지 한 후 반사를 통해 2.0+ API를 호출해야한다고 생각합니다 (사용 android.os.Build.VERSION_CODES).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top