BitmapFactory.Options 官网API介绍

字段名称 使用版本 注释
BitmapFactory.Options.inPurgeable: @deprecated VERSION_CODES>=LOLLIPOP 如果设置为ture,则表示创建的bitmap在内存不足的情况下,可以被回收,如果再次调用,则重新decode和
inInputShareable一起使用,可以使用inInputShareable设置的共享流一起或者数据复制生成新的图片,避免重新decode
BitmapFactory.Options.inInputShareable: @deprecated VERSION_CODES>=LOLLIPOP 如果inPurgeable设置为false,则忽略,只有当inPurgeable设置为ture才有效。目的是设置bitmap是否可以共享数据比如inputstream,array等,需要深度克隆
BitmapFactory.Options.inPreferredConfig: 指定bitmap保存或者编码格式,直接决定内存大小。可以设置的值:
Bitmap.Config.ARGB_8888:这个是android系统默认的格式,每个像素占用的内存是:4个字节,ARGB,各占一个1字节,既8位。占用的内存大小是:WH4 ,就是加载到app中占用的内存大小。理解方式:4个8,
Bitmap.Config.ARGB_4444:每个像素占用2个字节,ARGB,各占4位,这个已经被android抛弃,内存占用大小:WH2,理解方式:4个4,
Bitmap.Config.RGB_565:这个比较特除,每个像素占2个字节,没有A,R:5位,G:6 B:5,立即方式同样。
Bitmap.Config.ALPHA_8:每个像素用一个字节,保存为透明的,如果将config设置为null,那么系统会按照最合适的格式去解码图片,这个应该是效果最好的,但是也是最耗费内存。Android默认使用:ARGB_8888
BitmapFactory.Options.inDither: 这个值和抖动解码有关,默认值为false,表示不采用抖动解码
BitmapFactory.Options.inMutable: 如果为true,则返回一个可以调用setpixel设置每个像素颜色的bitmap,否则调用setpixel会crash。
BitmapFactory.Options.inJustDecodeBounds: 如果设置为true,则在解码的时候将不会返回bitmap,不占用的内存,只解析图片的尺寸相关属性,比如:w和h,这样就可以知道图片的w和h,配合inSampleSise属性,对图片进行缩放处理,可以有效的减少内存,防止OOM
BitmapFactory.Options.inSampleSize: 这个值指定了在decodebitmap的时候,长宽两个方向上像素缩小的倍数。小于1时,就会放大(同时decode会把这个值当做1来处理)。如果大于1(必须是2的幂,否则会找最近的2的幂)时,就会缩小,比如,原图:100100,该设置为2,那么缩放后的图片就是:5050,内在大小缩小了1/4,网上流传各种计算合适的inSampleSise的方法
BitmapFactory.Options.inPremultiplied: 如果设置了true(默认是true),那么返回的图片RGB都会乘以A的颜色,比如:(a,r,g,b)读取出来的就是:(a,ar,ag,ab),这个也是ALPHA处理的一个算法,API建议:如果bitmap要作为view系统或者canvas使用,不建议设置为false,否则会抱出异常
BitmapFactory.Options.inDensity: 位图片设置屏幕密度,即每英寸有多少个像素,但是如果INScaled设置了,同时inDensity的值和inTargetDensity不同时,这个时候图片将缩放位inTartgetDensity指定的值,如果设置为0,则BitmapFactory.decodeResource(Resources,int)和BitmapFactory.decodeResource(Resources, int,BitmapFactory.Options),decodeResourceStream(Resources,TypedValue, InputStream, Rect, BitmapFactory.Options) 将inTargetDensity用DisplayMetrics.densityDpi来设置,其它函数则不会对bitmap进行任何缩放。
BitmapFactory.Options.inTargetDensity: 表示要被画出来时的目标像素密度(对应的是DisplayMetrics中的densityDpi,不是density)。和InScaled,Indensity一起使用,主要是为了对图片进行缩放。如果设置为0, BitmapFactory.decodeResource(Resources,int)}, BitmapFactory.decodeResource(Resources, int, BitmapFactory.Options)},BitmapFactory.decodeResourceStream这三个将按照DisplayMetricx的density处理,其----他不做缩放处理
BitmapFactory.Options.inScreenDensity: InDensity,InTargetDensity,inScreenDensity主要是确定是否需要对bitmap进行缩放处理,如果缩放,缩放后的W和H应该是多少,缩放比例主要是通过:InTaargetDenisity/inDensity作为缩放比例。详解。,
BitmapFactory.Options.inScaled: 如果设置为ture,且indensity和inTargetDensity不为0,则图片将根据IntargetDensity进行缩放,而不依赖图片系统每次绘制的时候缩放,也就是在decode的时候就进行了缩放处理
BitmapFactory.Options.inPreferQualityOverSpeed: 如果设置了,decode将以牺牲性能而提高图片的质量,这个值只有在解析JPEG的时候才有作用
BitmapFactory.Options.outWidth,outHeight,outMimeType 这几个值,只有设置inJustDecodeBounds的时候才设置的,可以通过这写值,对图片进行缩放处理,以减少内存消耗

更多相关文章

  1. Android(安卓)应用语言设置的实现
  2. Android之glide加载图片圆角效果
  3. Android多点触控(图片的缩放Demo)
  4. Android(安卓)Tab 控件详解及实例
  5. Android中的DownloadManager
  6. 基于Android(安卓)tess-two工程的数字识别
  7. android spinner自动弹出列表,设置title,TtextView不换行自动截取
  8. android 选择器selector的用法说明
  9. android 层叠图片形成一张图片

随机推荐

  1. Android上的ART虚拟机
  2. 阅读《Android(安卓)从入门到精通》(?)——V
  3. Android adb shell刷机命令实战
  4. Android Volley框架使用详解
  5. android 单元测试, 以sqlite测试为例
  6. Android当前版本使用分布情况
  7. Android利用NotificationListenerService
  8. ToolBar左上角一个返回按钮的实现
  9. 判断Android(安卓)APP是否在前台运行
  10. Error parsing XML: unbound prefix on X