Android examples for Graphics:Bitmap Rotate
Helper method to decode the image to bitmap based on its orientation and rotate accordingly if the output is not in portrait mode
//package com.java2s; 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 { /**/*w w w. j ava 2 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); 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; } }