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 * / options.outWidth;
options.outWidth = ;
options.outHeight = height;
/* 这样才能真正的返回一个Bitmap给你 */
options.inJustDecodeBounds = false;
Bitmap bmp = BitmapFactory.decodeFile(path, options);
image.setImageBitmap(bmp);

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

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

Android BitmapFactory.Options的更多相关文章

  1. Android学习笔记之BitmapFactory.Options实现图片资源的加载...

    PS:小项目总算是做完了...历经20多天...素材,设计,以及实现全由自己完成...心力憔悴啊...该写写博客记录一下学习到的东西了... 学习内容: 1.使用BitmapFactory.Optio ...

  2. Android实战简易教程-第九枪(BitmapFactory.Options对资源图片进行缩放)

    我们知道,我们编写的应用程序都是有一定内存限制的.程序占用了过高的内存就easy出现OOM(OutOfMemory)异常.因此在展示高分辨率图片的时候,最好先将图片进行压缩,压缩后的图片大小应该和用来 ...

  3. Android使用BitmapFactory.Options解决加载大图片内存溢出问题

    由于Android对图片使用内存有限制,若是加载几兆的大图片便内存溢出.Bitmap会将图片的所有像素(即长x宽)加载到内存中,如果图片分辨率过大,会直接导致内存溢出(java.lang.OutOfM ...

  4. android 下载图片出现SkImageDecoder::Factory returned null,BitmapFactory.Options压缩

    网上有很多说是因为没有采用HttpClient造成的,尼玛,我改成了HttpClient 请求图片之后还是会出现SkImageDecoder::Factory returned null, 但是直接使 ...

  5. android之BitmapFactory.Options的使用

    怎样获取图片的大小? 首先我们把这个图片转成Bitmap,然后再利用Bitmap的getWidth()和getHeight()方法就可以取到图片的宽高了. 新问题又来了,在通过BitmapFactor ...

  6. 【转】BitmapFactory.Options

    BitmapFactory.Options这个类的信息:http://developer.android.com/reference/android/graphics/BitmapFactory.Op ...

  7. Android BitmapFactory图片压缩处理(大位图二次採样压缩处理)

    Android实际开发中.在载入大量图片的时候.比方ViewPager.GridView.ListView中,载入了大量的比較大图片就easy出现OOM(内存溢出)的异常,这是由于一个应用的最大内存使 ...

  8. BitmapFactory.Options对图片进行缩放

    package com.pingyijinren.helloworld.activity; import android.graphics.Bitmap; import android.graphic ...

  9. BitmapFactory.Options

    BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options(); bmpFactoryOptions.inSampleSiz ...

随机推荐

  1. bzoj4998: 星球联盟(link-cut-tree)

    题面 bzoj 题解 bzoj2959: 长跑的弱化版 产生了环就并查集维护一下 Code #include<bits/stdc++.h> #define LL long long #de ...

  2. 【实战】Axis2后台Getshell

    实战遇到的情况---任意文件读取,读取/conf/axis2.xml内容,读取用户名和密码登录后台 当然弱口令也是屡试不爽的. 操作起来 1.上传cat.aar(链接:https://pan.baid ...

  3. (转)DB2和 Oracle的并发控制(锁)比较

    DB2和 Oracle的并发控制(锁)比较 牛 新庄2005 年 12 月 26 日发布 原文:https://www.ibm.com/developerworks/cn/data/library/t ...

  4. linux安装使用xdebug

    我还是来给大家一个正确的配方,每个人的php版本不一样 所以下载的xdebug应该是不一样的 1,https://xdebug.org/wizard.php   进入这个网页 把自己phpinfo的信 ...

  5. 【Qt开发】常用控件--QLineEdit

    QLineEdit是单行文本编辑控件.比如用户名,密码等输入框可以使用该控件. 所属头文件<QLineEdit> 常用方法 1.void setText(const QString &am ...

  6. JavaScript引擎理解

    JavaScript 虽然给人感觉是一个多线程执行的语言,但是其实JavaScript引擎是伪多线程,是单线程执行的, 浏览器内核:实现允许多个线程异步执行,这些线程在内核制控下相互配合以保持同步.假 ...

  7. 关于chrome下的bug

    最近看了大神的一篇文章,于是尝试了一下里面说的bug以及修复 1.Chrome下absolute绝对定位元素部分display属性值不渲染bug 首先还原一下bug.. ff下的下效果 点击按钮后的效 ...

  8. PHP之mb_substr使用

    mb_substr (PHP 4 >= 4.0.6, PHP 5, PHP 7) mb_substr - Get part of string mb_substr - 获取部分字符串 Descr ...

  9. json test

    public static void main(String[] args) { class B { String name; public String getName() { return nam ...

  10. Linux 的启动流程--转

    http://cloudbbs.org/forum.php?mod=viewthread&tid=17814 半年前,我写了<计算机是如何启动的?>,探讨BIOS和主引导记录的作用 ...