Android Bitmap理解

Bitmap加载

在android中可以使用BitmapFactory类提供的四类方法:decodeFile,decodeResource,decodeStream,decodeByteArray来完成一个bitmap的加载。其中decodeFile,decodeResource是间接调用decodeStream实现的。

Bitmap的高效加载

Bitmap的高效加载是通过BitmapFactory.Options来实现。
其中BitmapFactory.Options可以用来缩放图片的大小,用到的是inSampleSize参数。
InSampleSize=1,表示图片大小为原始大小。
inSampleSize=2,表示图片宽高均为原始图片大小的1/2,则像素数为原来图片的1/4,则其占用的内存也为原来的1/4。
注意inSampleSize取值应为2的指数倍,当inSampleSize=3时系统会取一个接近3的数2来代替。
举例:

public static Bitmap pathToBitmap(String path ,int inSampleSize) { BitmapFactory.Options options =new BitmapFactory.Options(); // true 不加载图片到内存,知获取bitmap 的 宽 高 options.inJustDecodeBounds=true; //加载 获取图片属性 BitmapFactory.decodeFile(path,options); options.inSampleSize=inSampleSize; //返回缩略的bitmap 到内存 options.inJustDecodeBounds=false; Bitmap bitmap=BitmapFactory.decodeFile(path, options); return bitmap; }

其中inJustDecodeBounds参数设为true时,表示获取图片的原始宽高,而不取加载图片到内存。
一般inSampleSize值是通过原始图片的宽高再根据采样率的规则计算出来的。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Android 将drawable下的图片转换成bitmap、Drawable

将drawable下的图片转换成bitmap1、BitmapbitmapBitmapFactory.decodeResource(getResources(),R.drawable.xxx);2、Resourcesrthis.getContext().getResources();In

KVM调整cpu和内存

一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid