首页 > 代码库 > Bitmap createScaleBitmap()需要注意点
Bitmap createScaleBitmap()需要注意点
我们在创建Bitmap对象的时候,可能需要源于原来的Bitmap,然后做一些修改创建一个新的Bitmap,如以下方法:
public static Bitmap createBitmap(Bitmap src);
public static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height);
Matrix m, boolean filter);
boolean filter);
注意API里的说明:
* Returns an immutable bitmap from the specified subset of the source
* bitmap. The new bitmap may be the same object as source, or a copy may* have been made. It is initialized with the same density as the original
* bitmap.
在创建Bitmap的时候,里面会有这么一个判断
if (!source.isMutable() && x == 0 && y == 0 && width == source.getWidth() &&height == source.getHeight() && (m == null || m.isIdentity()))
return source;
}
在这里看出,如果原图是不可变的,新创建的图大小与原图一样,则直接返回原图。
如果代码里这样使用:
Bitmap newBmp = Bitmap.createBitmap(src, 0, 0, w, h);
src.recycle();
当 w == src.getWidth() && h == src.getHeight()时,可能newBmp直接返回的就是src这个对象,如果src被recycle()释放掉之后,再去使用newBmp,可能就会报异常
Bitmap createScaleBitmap()需要注意点
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。