Android Kamera Rotasyon Sorunu

Android üzerinde resim çekmek istediğimizde çeşitli yöntemler mevcut.İstenildiği takdirde SurfaceView üzerine yansıtılan anlık resimi yakalayabilir ve ya intent servislerinden yararlanıp telefonun kamerasına direk erişim sağlayabiliriz.SurfaceView özelliğini kullandığımızda çoğu şey elimizde olduğundan rotate,orientation işlemlerini kolayca yapabiliriz buna karşı intent servislerini kullandığımızda bu kadar esnek olamıyoruz.

Bu yazıda intent servislerini kullandığımızda başımıza gelecek sıkıntılardan biri olan rotation sorununu çözeceğiz.Telefon yada tablet ile bu şekilde resim çektiğimizde orientation horizontal olduğunda kamera açıldığında vertical olarak resim çekersek resim yan çekilebiliyor.Bunu basit bir çevirme işlemi yaparak çözebiliriz ama horizontal olarak çekilen resim bozulacaktır.Böyle bir seneryoda makinanın orientation değerine baktığımızda vertical bile çeksek horizontal olarak gözükecektir bunun sebebi activity’nin horizontal oluşudur.Seneryoda düşünmemiz gereken resimin hangi pozisyonda çekildiğini bulup ona göre rotasyon işlemi yaptırmak olacaktır.

Android üzerinde bu işlem şu şekilde yapılabilir.

 

ExifInterface exif = new ExifInterface(uri.getPath().toString());

String orientString = exif.getAttribute(ExifInterface.TAG_ORIENTATION);
int orientation = orientString != null ? Integer.parseInt(orientString) : ExifInterface.ORIENTATION_NORMAL;

if (orientation == ExifInterface.ORIENTATION_ROTATE_90) rotationAngle = 90;
if (orientation == ExifInterface.ORIENTATION_ROTATE_180) rotationAngle = 180;
if (orientation == ExifInterface.ORIENTATION_ROTATE_270) rotationAngle = 270;

 

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir