Android开发笔记之Bitmap的放缩

来源:互联网 发布:cocos2d-js api 编辑:程序博客网 时间:2024/06/06 07:30
百度搜索了几种方法。最后找到一个可用的方法:
Matrix matrix = new Matrix();
matrix.postScale(2.5f,3.5f);
Bitmap resizeBmp = Bitmap.createBitmap(bm,0,0,bm.getWidth(),bm.getHeight(),matrix,true);
其中2.5f和3.5f分别是x,y对应的放大倍数。 这里的bm是放大前的Bitmap类型图片。
resizeBmp是放大后的bitmap。
如果想要适应性放大的话,可以更改matrix.postScale里面的放大倍数。
因为里面是float类型。
可以用:
float dx=(float)目标宽度/当前宽度;   的这种形式来进行适应性的放大。比如我的代码:
float dw = (float)GameDB.mImageIds.get(0).getWidth()/bm.getWidth();
float dh = (float)GameDB.mImageIds.get(0).getHeight()/bm.getHeight();
其中,GameDB.mImageIds.get(0).getWidth()为最后放大到的宽度,bm.getWidth()为当前bitmap的宽度。
之后替换矩阵里面的放大倍数  matrix.postScale(dw, dh);
然后重画bitmap即可。
即  Bitmap resizeBmp = Bitmap.createBitmap(bm,0,0,bm.getWidth(),bm.getHeight(),matrix,true);
0 0