《老罗Android第二季》Bitmap位图解码

1. Bitmap位图解码
 Android设备系统资源是有限的,会给单独的应用分配大概16MB的内存。如果Bitmap资源太大,会造成内存溢出。
示例:让一个很大的图片,以一个比例缩小后显示在一个ImageView中。
1. 在Activity中,点击按钮显示图片 
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
	Bitmap bm = BitmapTools.decodeBitmap(getResources(),
			R.drawable.a, 50, 50);
	imageView.setImageBitmap(bm);
	}
});
2. 定义一个Bitmap工具类
public class BitmapTools {
public BitmapTools() {
}
/**@param resources        资源文件
 * @param resId            解码位图的id
 * @param reqWith          指定输出位图的宽度
 * @param reqHeight        指定输出位图的高度
 */
public static Bitmap decodeBitmap(Resources resources, int resId,
		int reqWith, int reqHeight) {
	// 对位图进行解码的参数设置
	BitmapFactory.Options options = new BitmapFactory.Options();
	// 在对位图进行解码的过程中,避免申请内存空间
	options.inJustDecodeBounds = true;
	BitmapFactory.decodeResource(resources, resId, options);
	// 对图片进行一定比例的压缩处理
	options.inSampleSize = calculateInSimpleSize(options, reqWith,reqHeight);
	options.inJustDecodeBounds = false;// 真正输出位图
	return BitmapFactory.decodeResource(resources, resId, options);
}
public static int calculateInSimpleSize(BitmapFactory.Options options,
		int reqWith, int reqHeight) {
	// 获得图片的原始宽高
	int imageHeight = options.outHeight;
	int imageWidth = options.outWidth;
	int inSimpleSize = 1;// 压缩比例
	if (imageHeight > reqHeight || im
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值