Android examples for android.graphics:Image Load Save
decode the image to bitmap based on its orientation and rotate accordingly if the output is not in portrait mode
import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.media.ExifInterface; import android.util.Log; public class Main { /**/*from ww w. j av a2 s . c o m*/ * Helper method to decode the image to bitmap based on its orientation and * rotate accordingly if the output is not in portrait mode * * @param context * @param path * @return */ public static Bitmap decodeFile(Context context, String path) { int orientation; try { if (path == null) { return null; } // decode image size BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; // Find the correct scale value. It should be the power of 2. final int REQUIRED_SIZE = 70; int width_tmp = o.outWidth, height_tmp = o.outHeight; int scale = 4; while (true) { if (width_tmp / 2 < REQUIRED_SIZE || height_tmp / 2 < REQUIRED_SIZE) break; width_tmp /= 2; height_tmp /= 2; scale++; } // decode with inSampleSize BitmapFactory.Options o2 = new BitmapFactory.Options(); o2.inSampleSize = scale; Bitmap bm = BitmapFactory.decodeFile(path, o2); Bitmap bitmap = bm; ExifInterface exif = new ExifInterface(path); orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); Log.e("orientation", "" + orientation); Matrix m = new Matrix(); if ((orientation == 3)) { m.postRotate(180); m.postScale((float) bm.getWidth(), (float) bm.getHeight()); bitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), m, true); return bitmap; } else if (orientation == 6) { m.postRotate(90); bitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), m, true); return bitmap; } else if (orientation == 8) { m.postRotate(270); bitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), m, true); return bitmap; } return bitmap; } catch (Exception e) { e.printStackTrace(); } return null; } }