Bitmap.createScaledBitmap的陷阱
来源:互联网 发布:蜂鸟众包网络异常 编辑:程序博客网 时间:2024/05/21 06:52
本文转载自:http://blog.csdn.net/lishouyi710/article/details/9197653
在显示图片时其他图片都没问题, 但一些特定图片的显示就crash。
代码如下:
Bitmap bmp = BitmapFactory.decodeFile(file, opts);
useThisBitmap = Bitmap.createScaledBitmap(bmp, w, h, true);
bmp.recycle();
通过debug发现useThisBitmap里的buffer在执行bmp.recycle();后变为null。
当时就闪现一个猜测,是不是w和h与bmp的宽高一致时createScaledBitmap就直接返回bmp本身了,这样bmp.recycle();自然会导致crash。
于是就看createScaledBitmap的函数提示:
Creates a new bitmap, scaled from an existing bitmap, when possible.
If the specified width and height are the same as the current width and height of the source btimap,
the source bitmap is returned and now new bitmap is created.
这句话能看明白吗? 好像有奇异吧,事实上它应该只返回了source bitmap没有去创建。
将代码改成:
if (bmp.getWidth() == w && bmp.getHeight() == h) {
useThisBitmap = bmp;
} else {
useThisBitmap = Bitmap.createScaledBitmap(bmp, w, h, true);
bmp.recycle();
}
问题解决。
- Bitmap.createScaledBitmap的陷阱
- Bitmap.createScaledBitmap的陷阱
- public static Bitmap createScaledBitmap(
- 关于BItmap.createScaledBitmap释放内存引发的bug
- 【bug】:Bitmap.createScaledBitmap不能满屏
- public static Bitmap createScaledBitmap(Bitmap unscaledBitmap, int dstWidth, int dstHeight,
- createScaledBitmap参数
- '\'的陷阱
- :?的陷阱
- Delphi的接口陷阱
- TWebBrowser的Cache陷阱
- groovy 的陷阱
- 决策者的七大陷阱
- 公司政治的陷阱
- iterator的陷阱
- typedef的两个陷阱
- assert的陷阱
- 盖茨的陷阱
- 百度、cnzz、piwik 统计ajax请求方法
- java开发中的工具函数(Util)---日期处理(一)
- luabinding总结
- linux常用命令
- 导入证书到jdk
- Bitmap.createScaledBitmap的陷阱
- spring 依赖注入
- RSA算法加密/解密工具类
- 版本更新
- MySQL修改表的外键约束
- 线程(4)——JAVA中的基本线程操作(下)
- Servlet线程安全问题
- 相关系数 Correlation Coefficient 的理解
- 抽象类 abstract class