方法1.
利用Bitmap.createBitmap
Bitmap
adjustPhotoRotation(Bitmap bm, final int orientationDegree)
{
Matrix m = new Matrix();
m.setRotate(orientationDegree, (float) bm.getWidth() / 2, (float)
bm.getHeight() / 2);
try {
Bitmap
bm1 = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(),
m, true);
return bm1;
} catch (OutOfMemoryError ex) {
}
return
null;
}
方法2.
利用Canvas.drawBitmap
Bitmap
adjustPhotoRotation(Bitmap bm, final int orientationDegree)
{
Matrix m = new Matrix();
m.setRotate(orientationDegree, (float) bm.getWidth() / 2, (float)
bm.getHeight() / 2);
float
targetX, targetY;
if (orientationDegree == 90) {
targetX = bm.getHeight();
targetY = 0;
} else {
targetX = bm.getHeight();
targetY = bm.getWidth();
}
final
float[] values = new float[9];
m.getValues(values);
float x1 =
values[Matrix.MTRANS_X];
float y1 =
values[Matrix.MTRANS_Y];
m.postTranslate(targetX - x1, targetY - y1);
Bitmap bm1 =
Bitmap.createBitmap(bm.getHeight(), bm.getWidth(),
Bitmap.Config.ARGB_8888);
Paint paint = new Paint();
Canvas
canvas = new Canvas(bm1);
canvas.drawBitmap(bm, m, paint);
return
bm1;
}
性能測(cè)試:
1. 手機(jī)
CPU : MTK6575 ,1G Hz
MEM : 512MB
OS : andoid 2.3.7
2.圖片尺寸1632 * 1224
結(jié)果:
1. 方法1在280 - 350毫秒間, 方法2在110毫秒左右。
2. 方法2優(yōu)于方法1
|