안드로이드 개발 질문/답변
(글 수 45,052)
제가 현재 개발중인 어플에서 기본내장 카메라를 이용하여 사진을 찍는 기능이 있습니다.
넥서스원의 기본내장카메라어플로 찍으면 사진이 새로로 찍힙니다.
그런데 갤럭시s의 기본내장카메라어플로 찍으면 사진이 가로로 찍힙니다.
찍은 사진을 이미지뷰에 뿌려주는데요..
넥서스원으로 찍은사진은 제대로 나옵니다만..
갤럭시s로 찍은 사진이 기본사진이 찍히는 방향이 가로다 보니 사진이 회전되어서 나옵니다.
이 경우 직접 사진이 뿌려질때 세로방향으로 바꿔주는 방법이 있나요?
그런 방법이 없을경우는 제가 카메라 기능을 따로 만들워줘야 하는데..
워낙 디자인 실력이 없다보니 카메라를 이쁘게 만들 자신도 없구요,...ㅠㅡㅠ
고수님들께 도움을 청합니다..
Media Store DB나 Jpeg 의 Exif내에 사진 회전 각도가 기록됩니다. 그걸 참조해서 회전한 각도를 체크한 다음 사진을 회전시켜주고 ImageView에 뿌려 주시면 됩니다.
만약 직혀진 사진의 File Path를 알 경우 직접 Exif에서 아래의 함수로 회전 각을 얻구요..
import android.media.ExifInterface;
public static int getExifOrientation(String filepath) {
int degree = 0;
ExifInterface exif = null;
try {
exif = new ExifInterface(filepath);
} catch (IOException ex) {
Log.e(TAG, "cannot read exif", ex);
}
if (exif != null) {
int orientation = exif.getAttributeInt(
ExifInterface.TAG_ORIENTATION, -1);
if (orientation != -1) {
// We only recognize a subset of orientation tag values.
switch(orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
degree = 90;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
degree = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_270:
degree = 270;
break;
}
}
}
return degree;
}