2014-07-24 3 views
0

기기의 저장 공간에서 사진을 읽고 안쪽 방향으로 필터링하는 Android 앱을 작성 중입니다.Android 기본 카메라로 촬영 한 사진의 기기 방향 가져 오기

Android의 기본 Camera 앱 (Android 4.4 KitKat)으로 사진을 찍을 때 사진의 방향이 저장되지 않습니다 (사진의 세부 정보에는 방향이 항상 0 임). 일부 다른 카메라 앱은 방향을 저장합니다.

기본 카메라 앱의 버그/기능입니까?

카메라 앱에서 Exif 헤더의 방향을 설정하지 않은 경우 사진을 찍을 때 장치가 거꾸로되었는지 여부를 알 수있는 방법이 있습니까?

+0

이미지 해상도를 사용해보십시오. 스마트 폰이 사진을 찍을 때 가로 모드에있는 경우 해상도는 가로 : 높이, 세로 : 높이> 너비 여야합니다. – glethien

+0

기본 카메라 앱을 사용하면 저장된 이미지 데이터 자체가 "올바른"방식으로 저장되어 있습니까? 즉 센서의 기본 방향이 가로 방향 인 경우 휴대 전화로 사진을 찍으면 네이티브 카메라 앱이 가로 이미지를 제공합니까? –

답변

2

저는 방금 시도한 바 있습니다. 당신이 의미하는 바를 봅니다. 전체 해상도에서도 Nexus 4 (KitKat 사용)는 EXIF ​​방향 데이터가 아닌 실제 이미지 회전을 사용하는 것으로 보입니다.

나는 이것이 기능이 아니라 버그라고 말하고 싶습니다. EXIF 회전 데이터는 일반적으로 "이 사진을 세로로 찍었지만 이미지 데이터는 풍경입니다. 메모리가 부족한 모바일 장치이며 내 센서가이를 캡처하는 방식입니다. 이미지 데이터를 회전시키는 메모리와 CPU의로드를 사용합니다. "

(기기에서 회전 한 이미지를 볼 수는 있지만 화면의 이미지는 훨씬 더 낮을 수 있습니다. 예를 들어 Nexus 4의 평범한 카메라는 약 10 배의 픽셀을 Nexus 4의 화면으로 사용하기 때문에 메모리에있는 이미지의 작은 회전 사본 만 디스플레이에 올려 놓으면됩니다. 전체 크기 이미지의 회전 사본을 만들면 비용이 훨씬 더 비쌉니다. 전화기는 카메라가 생성하는 기본 방향에서 원래 캡쳐 된 이미지와 함께 EXIF ​​회전 데이터를 사용합니다.)

다른 식으로 표현하면 EXIF ​​방향 값이 보정에 사용됩니다. 이미지 데이터가 다른 경우 카메라가 들어있는 방향에서 사진 찍기. 카메라가 어떻게 잡혀 있었는지 말할 수는 없습니다. 그리고 일부 장치는 이미지 데이터를 처음부터 올바른 방향으로 저장할 정도로 영리합니다 (회전을 비교적 저렴하게 만드는 일종의 하드웨어 기능을 통해 가능할 수도 있습니다).

동일한 사진 응용 프로그램이 다른 접근 방식을 취할 수도 있습니다 다른 해상도의 경우 회전하는 데 비용이 많이 드는 고해상도를 위해 EXIF ​​데이터를 사용하지만 크기 조정 된 이미지의 경우 이미지 데이터 자체를 회전시키고 EXIF ​​방향 플래그를 지우십시오 ("어쨌든 데이터를 크기 조정할 예정이라면, 나는 올바른 방향으로 넣을 수도 있습니다 ... ")

+0

고마워요. 이것은 의미가 있으며 내 의혹을 확인합니다. –

관련 문제