0

我有一個應用程序,從相機或畫廊拍攝的照片,並在imageview中顯示結果。所有垂直方向的圖像奇怪自動只在某些設備

我只得到與內容提供商的圖像,並使用這個尺度功能

public Bitmap scaleim(Bitmap bitmap) { 
     ... 
     Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, resizedWidth, resizedHeight, false); 
     return scaledBitmap; 
    } 

在我的設備與Android 5一切工作確定,我現在已經與Android 7測試相同的應用程序一個我的朋友設備上,和每個垂直方向的圖片都會自動旋轉到水平方向。 這看起來很奇怪,我不知道是什麼原因引起的問題。

回答

0

問題不在縮放中,但捕獲的圖像按硬件工作方式不同。在開始縮放之前,應根據合適的設備進行旋轉。 這是下面的代碼:

Matrix matrix = new Matrix(); 
    matrix.postRotate(getImageOrientation(url)); 
    Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), 
    bitmap.getHeight(), matrix, true) 

public static int getImageOrientation(String imagePath){ 
    int rotate = 0; 
    try { 

     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; 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return rotate; 
} 
+0

感謝您的回答,但我不能找到有效的方式來獲得使用這種方法的URI的文件路徑,並返回我FileNotFoundException異常。你有什麼建議嗎? – AndreaF

+0

我相信它應該有路徑,然後才轉向位圖。 scaleim(位圖位圖) – QuokMoon

相關問題