如何高效加载bitmap

本文介绍了一种使用BitmapFactory.Options来高效加载图片的方法。通过设置inJustDecodeBounds参数为true来获取图片尺寸信息,并据此计算合适的inSampleSize值,进而实现图片的按需缩放加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于如何高效加载bitmap,就是采用BitmapFactory.Options来加载所需的图片大小。

通过BitmapFactory.Options来对图片进行缩放,主要利用其inSampleSize参数,即采样率。

获取采样率的步骤一般如下:

(1)将BitmapFactory.Options的inJustDecodeBounds参数设置为true并加载图片

(2)获取原始图片的宽高信息,即options的outwidth和outheight

(3)计算出所需采样率的大小,即inSampleSize的值

(4)将BitmapFactory.Options的inJustDecodeBounds参数设置为false并加载图片


相关代码如下

//reqWidth 期望的图片的宽,单位像素

//reqHeight 期望的图片的高,单位像素

public static Bitmap getBitmapFromRes(Resources res,int resId,int reqWidth,int reqHeight) {

final BitmapFactory.Options options = new BitmapFactory.Options();

options.inJustDecodeBounds = true;

BitmapFactory.decodeResource(res,resId,options);

options.inSampleSize = getSampleSize(options,reqWidth,reqHeight);

options.inJustDecodeBounds = false;

BitmapFactory.decodeResource(res,resId,options);

}


public static int getSampleSize(BitmapFactory.Options options,int reqWidth,int reqHeight) {

final int width = options.outWidth;

final int height = options.outHeight;

int inSampleSize = 1;

if (width > reqWidth || height > reqHeight) {

final int halfWidth = width / 2;

final int halfHeight = height / 2;

while ((halfWidth / inSampleSize) >= reqWidth &&  (halfHeight / inSampleSize) >= reqHeight) {

inSampleSize *= 2;

}

}

return inSampleSize;

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值