方法1.利用Bitmap.createBitmap
BitmapadjustPhotoRotation(Bitmap bm, final int orientationDegree){
Matrix m = new Matrix();
m.setRotate(orientationDegree, (float) bm.getWidth() / 2, (float)bm.getHeight() / 2);
try {
Bitmapbm1 = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(),m, true);
return bm1;
} catch (OutOfMemoryError ex) {
}
returnnull;
}
方法2.利用Canvas.drawBitmap
BitmapadjustPhotoRotation(Bitmap bm, final int orientationDegree){
Matrix m = new Matrix();
m.setRotate(orientationDegree, (float) bm.getWidth() / 2, (float)bm.getHeight() / 2);
floattargetX, targetY;
if (orientationDegree == 90) {
targetX = bm.getHeight();
targetY = 0;
} else {
targetX = bm.getHeight();
targetY = bm.getWidth();
}
finalfloat[] 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();
Canvascanvas = new Canvas(bm1);
canvas.drawBitmap(bm, m, paint);
returnbm1;
}
性能测试:
1. 手机
CPU : MTK6575 ,1G Hz
MEM : 512MB
OS : andoid 2.3.7
2.图片尺寸1632 * 1224
结果:
1. 方法1在280 - 350毫秒间, 方法2在110毫秒左右。
2. 方法2优于方法1
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。