首页 > 代码库 > Android BitmapFactory.Options

Android BitmapFactory.Options

public Bitmap inBitmap 如果设置,解码选项“对象的方法,采取将尝试重用这个位图加载内容时。public int inDensity 使用的位图的象素密度。public boolean inDither 如果抖动是真实的,解码器将尝试到抖动的解码图像。public boolean inInputShareable 此字段一起选择inPurgeable。public boolean inJustDecodeBounds 如果设置为true,解码器将返回null(位图),但输出...public boolean inMutable 如果设置,解码方法总是返回一个可变的位图,而不是一个一成不变的。public boolean inPreferQualityOverSpeed 如果inPreferQualityOverSpeed??设置为true,解码器将尝试解码重建图像以较高的质量,甚至不惜牺牲的解码速度。public Bitmap.Config inPreferredConfig 如果非空,这个内部配置解码器将尝试解码。public boolean inPurgeable 如果设置为true,则生成的位图将分配给它的像素,这样它们可以被清除,如果系统需要回收内存。public int inSampleSize 如果设置为> 1的值,要求的解码器,以进行子采样的原始图像,返回一个较小的图像,以节省内存。public boolean inScaled 当设置了这个标志,如果夏季风和inTargetDensity不为0,位图将进行调整,以符合inTargetDensity时加载,而不是依赖它每次被画到画布上的图形系统结垢。public int inScreenDensity 正在被使用的实际的屏幕的像素密度。public int inTargetDensity 目的地的像素密度的这个位图将被吸引到。public byte[] inTempStorage 温度存储用于解码。public boolean mCancel 表明,取消已经对这个对象调用的标志。public int outHeight 位图高度,设置独立的状态inJustDecodeBounds。public String outMimeType 如果知道,这个字符串解码后的图像的mime类型设置为。public int outWidth 位图的宽度,设置独立的状态inJustDecodeBounds。

inJustDecodeBounds设为true,BitmapFactory.decodeFile(String path, Options opt)并不会真的返回一个Bitmap给你,它仅仅会把它的宽,高取回来给你,就不会占用太多的内存。

    BitmapFactory.Options options = new BitmapFactory.Options();    options.inJustDecodeBounds = true;    Bitmap bmp = BitmapFactory.decodeFile(path, options);    /* 这里返回的bmp是null */ 

宽和高:options.outWidth 和 options.outHeight

获取图片指定大小的缩略图:

    /* 计算得到图片的高度 */    /* 这里需要主意,如果你需要更高的精度来保证图片不变形的话,需要自己进行一下数学运算 */    int height = options.outHeight * 200 / options.outWidth;    options.outWidth = 200;    options.outHeight = height;     /* 这样才能真正的返回一个Bitmap给你 */    options.inJustDecodeBounds = false;    Bitmap bmp = BitmapFactory.decodeFile(path, options);    image.setImageBitmap(bmp); 

要节约内存,还需要用到BitmapFactory.Options这个类里的 inSampleSize 这个成员变量:

    inSampleSize = options.outWidth / 200;   另外,为了节约内存我们还可以使用下面的几个字段:    options.inPreferredConfig = Bitmap.Config.ARGB_4444;    // 默认是Bitmap.Config.ARGB_8888    /* 下面两个字段需要组合使用 */    options.inPurgeable = true;    options.inInputShareable = true; 

 

Android BitmapFactory.Options