BitmapFactory.decodeResource 获取图片宽与高


之前使用:

Bitmap bm = BitmapFactory.decodeResource(context.getResources(), resId);

通过 bm.getWidth() 和 bm.getHeight() 来获取宽和高


还有更好的方法:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(context.getResources(), resId, options);

通过 options.outWidth 和 options.outHeight来获取宽和高,这种方法更节省内存。防止oom问题。

`BitmapFactory.decodeResource` 是Android开发中用于从资源文件中解码Bitmap的工具类`BitmapFactory`中的一个方法。它可以加载一个图片资源,并将其解码为一个`Bitmap`对象。这个方法通常用于获取应用中的图片资源,比如从`res/drawable`目录下的图片文件中生成`Bitmap`对象。`decodeResource`方法的典型用法如下: ```java Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image); ``` 在这行代码中: - `getResources()`是`Context`类中的一个方法,用于获取应用的资源对象。 - `R.drawable.image`是一个资源ID,指向了`res/drawable`目录下的一个图片资源文件。 该方法在内部会调用`decodeResourceStream`,这个方法接收四个参数和一个输入流,分别是资源对象、资源ID、资源的输入流、资源的属性集合以及一个可选的解码配置选项。 `BitmapFactory.decodeResource` 的实现涉及到资源的查找、输入流的获取和最终的解码过程。具体步骤如下: 1. 通过资源ID获取到资源的文件描述符。 2. 创建一个输入流来读取资源文件。 3. 使用`decodeStream`方法,从输入流中解码出一个`Bitmap`对象。 请注意,由于Android平台的不同版本和设备的内存管理策略,直接使用`BitmapFactory.decodeResource`方法加载大型图片到内存中可能会导致`OutOfMemoryError`。因此,在实际应用中,常常需要结合`BitmapFactory.Options`类来对解码过程进行优化,比如调整图片的采样率、限制解码后的图片尺寸和内存使用等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值