Android两种 旋转Bitmap方法
方法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
更多相关文章
- ANDROID NDK makefile 链接静态库的方法
- vue判断手机类型是安卓、微信或IOS
- Android(安卓)GPS学习 (二) :GPS 服务启动以及初始化流程
- Android(安卓)studio新建activity运行出错解决方法
- android gpuimage显示的缩放和剪裁模式
- Android学习之保持屏幕常亮的几种方法
- ActionBar setDisplayOptions 使用详解
- Android(安卓)通过字符串来获取R下面资源的ID 值
- android 得到唯一码和电话号码