您的位置:首页 > 移动开发 > Android开发

Android两种 旋转Bitmap方法

2015-08-11 14:20 501 查看

方法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;

}

性能测试:
1. 手机
CPU : MTK6575 ,1G Hz
MEM : 512MB
OS : andoid 2.3.7
2.图片尺寸1632 * 1224

结果:
1. 方法1在280 - 350毫秒间, 方法2在110毫秒左右。
2. 方法2优于方法1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: