6

Uygulamamda kameradan görüntü yakalamalı veya galeriden içe aktarmalıyım, bunu aktivitede resim görüntüsünde göstermeliyim. Her şey yolunda, ben her iki görüntüden alıyorum ve herhangi bir istisna olmaksızın görüntü görüntüsü üzerine ayarlamak mümkün. Ancak bazen görüntü düzgün bir şekilde ölçeklenmiyor ve dikey olarak geriliyor ya da yönelim değişiyor. Lütfen bana yardım edin. o ImageView taktıùınızda yönüne göre döner böyleceResimdeki görüntüyü kullanırken kameradan veya galeriden çekilen fotoğrafın yönü değişiyor ve bazen dikey olarak geriliyor Android

public static Bitmap decodeSampledBitmapFromResource(File photoFile, int reqWidth, int reqHeight) { 

    // First decode with inJustDecodeBounds=true to check dimensions 
    final BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inJustDecodeBounds = true; 
    try { 
     BitmapFactory.decodeStream(new FileInputStream(photoFile), null, 
       options); 

     // Calculate inSampleSize 
     options.inSampleSize = calculateInSampleSize(options, reqWidth, 
       reqHeight); 

     // Decode bitmap with inSampleSize set 
     options.inJustDecodeBounds = false; 

     return BitmapFactory.decodeStream(new FileInputStream(photoFile), 
       null, options); 

    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     return null; 
    } 
} 

public static int calculateInSampleSize(BitmapFactory.Options options, 
     int reqWidth, int reqHeight) { 
    // Raw height and width of image 
    final int height = options.outHeight; 
    final int width = options.outWidth; 
    int inSampleSize = 1; 

    if (height > reqHeight || width > reqWidth) { 

     // Calculate ratios of height and width to requested height and 
     // width 
     final int heightRatio = Math.round((float) height 
       /(float) reqHeight); 
     final int widthRatio = Math.round((float) width/(float) reqWidth); 

     // Choose the smallest ratio as inSampleSize value, this will 
     // guarantee 
     // a final image with both dimensions larger than or equal to the 
     // requested height and width. 
     inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio; 
    } 

    return inSampleSize; 
} 

cevap

7

görüntüleri farklı yönleri vardır:

İşte resmi android belgelerinden sevk görüntüyü deşifre etmek benim koddur. Fotoğrafın yönünü görüntünün özelliklerinden kontrol edebilirsiniz.
public static int getCameraPhotoOrientation(Context context, Uri imageUri, String imagePath){ 
    int rotate = 0; 
    try { 
     context.getContentResolver().notifyChange(imageUri, null); 
     File imageFile = new File(imagePath); 
     ExifInterface exif = new ExifInterface(
       imageFile.getAbsolutePath()); 
     int orientation = exif.getAttributeInt(
       ExifInterface.TAG_ORIENTATION, 
       ExifInterface.ORIENTATION_NORMAL); 

     switch (orientation) { 
     case ExifInterface.ORIENTATION_ROTATE_270: 
      rotate = 270; 
      break; 
     case ExifInterface.ORIENTATION_ROTATE_180: 
      rotate = 180; 
      break; 
     case ExifInterface.ORIENTATION_ROTATE_90: 
      rotate = 90; 
      break; 
     } 


     Log.d(TAG, "Exit orientation: " + orientation); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return rotate; 
} 

yönüne göre sınıfını döndürmek için RotateOrientation sınıf ekleyin -: aşağıdaki kodu kullanabilirsiniz uygun şekilde görüntüyü ...

 int rot=getCameraPhotoOrientation(this,Uri,picturePath); 
     if(rot!=0) 
     bitmap=new RotateOrientation().RotateOrientationCall(bitmap,rot); 

getCameraPhotoOrientation Yöntem ayarlamak için.

public class RotateOrientation { 

Bitmap RotateOrientationCall(Bitmap src,float degree) 
     { 


     Matrix matrix=new Matrix(); 
     matrix.postRotate(degree); 
     Bitmap bmOut = Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true); 
     return bmOut; 

     } 
      } 
+0

Ben Abhishek – Prashant

+0

@ ... deneyin ve size haber vereceğiz Tamam o u yararlıdır eğer ve voteup kontrol .. –

+0

sayesinde o fine..I've kodunuzu test işleri, abhishek benim uygulamam – Prashant