打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android两种旋转Bitmap方法

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android高手进阶教程(二十二)之---Android中几种图像特效处理的集锦!! -...
第52章、Bitmap图像处理(从零开始学Android)
8.2.1 Bitmap(位图)全解析 Part 1
Android中Bitmap和Drawable
Android中图像变换Matrix的原理、代码验证和应用(二)
Android实现截屏方式整理(总结)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服