壓縮

2012-12-17 114 views
6

後保留圖像的方向是我的代碼壓縮

 // 
     // reading an image captured using phone camera. Orientation of this 
     // image is always return value 6 (ORIENTATION_ROTATE_90) no matter if 
     // it is captured in landscape or portrait mode 
     // 
     Bitmap bmp = BitmapFactory.decodeFile(imagePath.getAbsolutePath()); 

     // 
     // save as : I am compressing this image and writing it back. Orientation 
     //of this image always returns value 0 (ORIENTATION_UNDEFINED) 
     imagePath = new File(imagePath.getAbsolutePath().replace(".jpg", "_1.jpg")); 



     FileOutputStream fos0 = new FileOutputStream(imagePath); 
     boolean b = bmp.compress(CompressFormat.JPEG, 10, fos0); 
     fos0.flush(); 
     fos0.close(); 
     fos0 = null; 

壓縮後和保存,像90度,雖然ExifInterface返回0(ORIENTATION_UNDEFINED)旋轉。任何指針,我怎樣才能保留源圖像的方向;在這種情況下它是6(或ORIENTATION_ROTATE_90)。

謝謝。

回答

4

計算器上多一點的搜索後,發現有人已經有解決方案解釋這個問題here漂亮(我已經upvoted)。

0

以下代碼將返回圖像的角度由其ORIENTATION

public static float rotationForImage(Context context, Uri uri) { 
     if (uri.getScheme().equals("content")) { 
     String[] projection = { Images.ImageColumns.ORIENTATION }; 
     Cursor c = context.getContentResolver().query(
       uri, projection, null, null, null); 
     if (c.moveToFirst()) { 
      return c.getInt(0); 
     } 
    } else if (uri.getScheme().equals("file")) { 
     try { 
      ExifInterface exif = new ExifInterface(uri.getPath()); 
      int rotation = (int)exifOrientationToDegrees(
        exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 
          ExifInterface.ORIENTATION_NORMAL)); 
      return rotation; 
     } catch (IOException e) { 
      Log.e(TAG, "Error checking exif", e); 
     } 
    } 
     return 0f; 
    } 

    private static float exifOrientationToDegrees(int exifOrientation) { 
    if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_90) { 
     return 90; 
    } else if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_180) { 
     return 180; 
    } else if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_270) { 
     return 270; 
    } 
    return 0; 
} 
} 
+0

感謝Chintan的回覆。你顯示的不完全是我的問題。我知道方向。問題是壓縮後,保存的圖像總是自動旋轉90度,如果通過ExifInterface查詢,則返回0或UNDEFINED。我想要的是,寫入文件時壓縮圖像的方向相同。希望我解釋了這個問題。 – iuq