*
* @param bitmap
* @param orientationDegree 0 - 360 范围
* @return
*/
Bitmap adjustPhotoRotation(Bitmap bitmap, int orientationDegree) {
Matrix matrix = new Matrix();
matrix.setRotate(orientationDegree, (float) bitmap.getWidth() / 2,
(float) bitmap.getHeight() / 2);
float targetX, targetY;
if (orientationDegree == 90) {
targetX = bitmap.getHeight();
targetY = 0;
} else {
targetX = bitmap.getHeight();
targetY = bitmap.getWidth();
}
final float[] values = new float[9];
matrix.getValues(values);
float x1 = values[Matrix.MTRANS_X];
float y1 = values[Matrix.MTRANS_Y];
matrix.postTranslate(targetX - x1, targetY - y1);
Bitmap canvasBitmap = Bitmap.createBitmap(bitmap.getHeight(), bitmap.getWidth(),
Bitmap.Config.ARGB_8888);
Paint paint = new Paint();
Canvas canvas = new Canvas(canvasBitmap);
canvas.drawBitmap(bitmap, matrix, paint);
return canvasBitmap;
}
在bitmap.setbitmap()之前调用。