当前位置: 代码迷 >> Android >> 关于使用Matrix进行图片旋转的有关问题
  详细解决方案

关于使用Matrix进行图片旋转的有关问题

热度:96   发布时间:2016-05-01 21:25:10.0
关于使用Matrix进行图片旋转的问题
this.degree += degree;

Matrix matrix = new Matrix();
matrix.setRotate( this.degree );

Bitmap tmpBitmap = Bitmap.createBitmap( this.bitmap, 0, 0, this.w, this.h, matrix, true );
BitmapDrawable bitmapDrawable = new BitmapDrawable( tmpBitmap );
this.imageView.setImageDrawable( bitmapDrawable );

使用上面的代码对图片进行旋转时,图片的大小会变,怎样才能让图片只旋转而大小不变?

this.imageView:图片对应的ImageView对象
degree:本次旋转的角度
this.w:原始图片的宽度
this.h:原始图片的高度

------解决方案--------------------
Java code
        Bitmap tmpBitmap = Bitmap.createBitmap( this.bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true );
------解决方案--------------------
探讨
Java code


Bitmap tmpBitmap = Bitmap.createBitmap( this.bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true );



旋转图片的时候 用图片本身的宽高设置旋转!!

------解决方案--------------------
this.w, this.h如何取值的,
用bitmap.getWidth()
------解决方案--------------------
除了垂直/水平的旋转(90,180...),用Matrix转完后返回的图片总是会变大,中心点不变

对于矩形的图片:tmpBitmap.getWidth()==
bitmap.getWidth()*Math.cos(degree)+bitmap.getHeight()*Math.sin(degree);


------解决方案--------------------
不会有圆形的图片的... 因为背景透明所以看着是圆的,其实是正方形的图,这样 h==w
Bitmap tmpBitmap = Bitmap.createBitmap( this.bitmap, 0, 0, this.w, this.h, matrix, true );
//把图片截出来就行了
int x= ?//这个自己手算下吧
int y= ?//这个自己手算下吧
int width=bitmap.getWidth();
int height=bitmap.getHeight();
Bitmap tmpSliceBitmap = Bitmap.createBitmap(tmpBitmap, x, y, width, height)


BitmapDrawable bitmapDrawable = new BitmapDrawable( tmpSliceBitmap );
this.imageView.setImageDrawable( bitmapDrawable );
  相关解决方案