首页
学习
活动
专区
圈层
工具
发布

android之BitmapFactory.Options的使用

,BitmapFactory.Options的使用是在加载图片时,就从图片的加载和使用说起 怎样获取图片的大小?...新问题又来了,在通过BitmapFactory.decodeFile(String path)方法将突破转成Bitmap时,遇到大一些的图片,我们经常会遇到OOM(Out Of Memory)的问题。...这就用到了我们上面提到的BitmapFactory.Options这个类。 BitmapFactory.Options这个类,有一个字段叫做 inJustDecodeBounds 。...示例代码如下: BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true...要想节约内存,还需要用到BitmapFactory.Options这个类里的 inSampleSize 这个成员变量。 我们可以根据图片实际的宽高和我们期望的宽高来计算得到这个值。

78620

Imageloader-压缩图片

通过采样率压缩图片的步骤: 将BitmapFactory.Options的inJustDecodeBounds参数设置为true并加载图片 从BitmapFactory.Options中取出图片的原始宽和高...,分别对应outWidth和outHeight 根据采样率的就着并结合目标View的所需大小计算出采样率inSampleSize 将BitmapFactory.Options的inJustDecodeBounds...参数设置为false,然后重新加载图片 ---- BTW: 说一下BitmapFactory.Options的inJustDecodeBounds属性,当参数设置为true时,BitmapFactory...int reqWidth, int reqHeight) { // 第一次解析将inJustDecodeBounds设置为true,不将图片加载到内存,获取图片的大小 BitmapFactory.Options...options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile

40420
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    加载大图片到内存

    程序分配的堆内存大小是16,虚拟机上面的VM Heep就是设置它的 一个图片所占的内存,比如1920*2560像素的图片需要,1920*2560*3至少这些的内存byte 找到ImageView控件对象 调用BitmapFactory...此时会报内存溢出的错误 我们需要对图片进行缩放 手机的分辨率比如:320*480 图片的分辨率比如:2000*4000 分别计算比例,2000/320 4000/480,按照大的那个比例进行缩放 调用重载方法BitmapFactory...对象的decodeFile(pathName,opts),参数:路径,Options对象 获取BitmapFactory.Option对象,通过new Options()方法 设置Options对象的属性...计算完比例之后 设置Options对象的属性inJustDecodeBounds为false,真解析图片 设置Options对象的采样率属性inSampleSize为上面计算的大的比例 调用重载方法BitmapFactory...; import android.graphics.BitmapFactory.Options; import android.media.ExifInterface; import android.os.Bundle

    1.2K20

    教你如何更好的加载大图片和长图片

    BitmapFactory这个类就提供了多个解析方法(decodeResource、decodeStream、decodeFile等)用于创建Bitmap。我们可以根据图片的来源来选择解析方法。...BitmapFactory为这些方法都提供了一个可选的参数BitmapFactory.Options,用来辅助我们解析图片。...BitmapFactory.Options有一个属性inJustDecodeBounds,这个属性当为true的时候,表明我们当前只是为了获取当前图片的边界的大小,此时BitmapFactory的解析图片方法的返回值为...这样我们就可以很愉快的拿到图片大小了,代码如下: BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds...options = new BitmapFactory.Options(); options.inJustDecodeBounds = false; BitmapFactory.decodeStream

    1.9K30

    Android Bitmap那些事之如何优化内存

    1、BitmapFactory使用: 说到图片的加载就必须说BitmapFactory,看名字就知道他的作用了,就是一个生产Bitmap的工厂,下图是它的一些工厂方法: ?...从上图可以看到BitmapFactory可以使用存储Bitmap数据的数组,Bitmap的资源ID,Bitmap文件等做为数据源来创建Bitmap对象,具体情况看你程序中提供的数据源是哪一种。...这些方法中对每一种数据源都提供了两个方法,这里需要注意一下BitmapFacotry.Options参数,它是BitmapFactory的内部类,有一些成员变量含义需要记一下,下面就来说说。...创建Bitmap,很多情况下都会使用下面的代码: BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds...public static int calculateInSampleSize( BitmapFactory.Options options,int reqWidth,int reqHeight

    82890

    Art of Android Development Reading Notes 12

    BitmapFactory类提供了四类方法:decodeFile、decodeResource、decodeStream和decodeByteArray从不同来源加载出一个Bitmap对象,最终的实现是在底层实现的...采用BitmapFactory.Options按照一定的采样率来加载所需尺寸的图片,因为imageview所需的图片大小往往小于图片的原始尺寸。...(2)BitmapFactory.Options的inSampleSize参数,即采样率 官方文档指出采样率的取值应该是2的指数,例如采样率=k,那么采样后的图片宽高均为原图片大小的 1/k。...options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource...需要注意的是,这个时候BitmapFactory获取的图片宽高信息和图片的位置以及程序运行的设备有关,这都会导致BitmapFactory获取到不同的结果。

    47950

    01、人人都会设计模式--简单工厂模式

    在 Android 中我们经常使用 Bitmap ,其实和 Bitmap 相关的 BitmapFactory 就是一个简单工厂模式 我们来看看 BitmapFactory 的方法 [BitmapFactory_method.png...] 可以看到 BitmapFactory 分为两类,一类是普通原静态方法「红色框中」,第二类是 JNI 调用的方法「黄色框内」 其实从字面意思我们也可以看到 BitmapFactory 就是 Bitmap...BitmapFactory ,为什么说 BitmapFactory 是一个简单工厂模式 BitmapFactory UML 分析 通过前面的学习,我们知道简单工厂模式要有一个产品「抽象类」,具体产品「...实现类」,还要有一个工厂,我们拿这三样对比 BitmapFactory 就可以了 ,我们看到是这样的 [BitmapFactory 的简易 UML] 纳尼?...BitmapFactory 生成 Bitmap 流程 大概看一个 BitmapFactory 生成 Bitmap 的一个流程吧,这里以 decodeFile(String filePath) 为例来说明

    65530
    领券