Java tutorial
//package com.java2s; import android.graphics.Bitmap; import android.graphics.Matrix; import android.media.ExifInterface; import android.text.TextUtils; import java.io.IOException; public class Main { public static Bitmap rotateBitmapInNeeded(String path, Bitmap srcBitmap) { if (TextUtils.isEmpty(path) || srcBitmap == null) { return null; } ExifInterface localExifInterface; try { localExifInterface = new ExifInterface(path); int rotateInt = localExifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); float rotate = getImageRotate(rotateInt); if (rotate != 0) { Matrix matrix = new Matrix(); matrix.postRotate(rotate); Bitmap dstBitmap = Bitmap.createBitmap(srcBitmap, 0, 0, srcBitmap.getWidth(), srcBitmap.getHeight(), matrix, false); if (dstBitmap == null) { return srcBitmap; } else { if (srcBitmap != null && !srcBitmap.isRecycled()) { srcBitmap.recycle(); } return dstBitmap; } } else { return srcBitmap; } } catch (IOException e) { e.printStackTrace(); return srcBitmap; } } public static float getImageRotate(int rotate) { float f; if (rotate == 6) { f = 90.0F; } else if (rotate == 3) { f = 180.0F; } else if (rotate == 8) { f = 270.0F; } else { f = 0.0F; } return f; } }