2014-12-04 2 views
0

Я создаю приложение для Android, где я нажимаю фотографию с камеры своего мобильного телефона и отображаю ее в ImageView, автоматически поворачивается на 90 градусов против часовой стрелки. Я хочу отобразить он в ориентации, в которой он щелкнул мобильным устройством, а не позволял ему вращаться.Поворот изображения на ориентацию мобильного телефона при съемке с камерой: Android

Может ли кто-нибудь предоставить соответствующие фрагменты кода или указатели на соответствующую документацию?

ответ

0

Проверить ExifInterface

ExifInterface exif = new ExifInterface(imageFilePath); 
int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); 

switch(orientation) { 
case ExifInterface.ORIENTATION_ROTATE_90: 
    // rotate the image 
    break; 

    //.... 
} 
0

Используйте этот methoh Это поможет вам.

/* 
* 1 = Horizontal (normal) 
* 2 = Mirror horizontal 
* 3 = Rotate 180 
* 4 = Mirror vertical 
* 5 = Mirror horizontal and rotate 270 CW 
* 6 = Rotate 90 CW 
* 7 = Mirror horizontal and rotate 90 CW 
* 8 = Rotate 270 CW 
*/ 
public static Bitmap getRotateBitmapImage(Bitmap bm, int newHeight,int newWidth, int exifOrientation) { 
    int width = bm.getWidth(); 
    int height = bm.getHeight(); 
    float scaleWidth = ((float) newWidth)/width; 
    float scaleHeight = ((float) newHeight)/height; 
    Matrix matrix = new Matrix(); 
    matrix.postScale(scaleWidth, scaleHeight); 
    switch (exifOrientation) { 
    case ExifInterface.ORIENTATION_ROTATE_270: 
     rotate = 270; 
     break; 
    case ExifInterface.ORIENTATION_ROTATE_180: 
     rotate = 180; 
     break; 
    case ExifInterface.ORIENTATION_ROTATE_90: 
     rotate = 90; 
     break; 
    case ExifInterface.ORIENTATION_TRANSPOSE: 
     rotate = 45; 
     break; 
    case 0: 
     rotate = 360; 
     break; 
    default: 
     break; 
    } 
    matrix.postRotate(rotate); 
    // resizedBitmap = Bitmap.createScaledBitmap(bm, 65, 65, true); 
    Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false); 
    return resizedBitmap; 
} 
+0

Я использую Intenet xyz = new Intent (Mediastore.ACTION_IMAGE_CAPTURE) для захвата изображения. В каком формате это хранится и как я могу передать объект изображения, захваченного здесь, в функцию, описанную здесь? Как насчет новой высоты, новой ширины? – psbits

+0

вы можете просто игнорировать элемент newHeight и newWitdh, если вы не масштабируете растровое изображение. просто используйте bitmap.getWidth() и bitmap.getHeight(). –

+0

Вы можете удалить новую высоту/ширину во время Bitmap.createBitmap – samsad

 Смежные вопросы

  • Нет связанных вопросов^_^