Android Bitmap理解

Wesley13
• 阅读 820

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值是通过原始图片的宽高再根据采样率的规则计算出来的。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
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
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Android 将drawable下的图片转换成bitmap、Drawable
将drawable下的图片转换成bitmap1、BitmapbitmapBitmapFactory.decodeResource(getResources(),R.drawable.xxx);2、Resourcesrthis.getContext().getResources();In
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Stella981 Stella981
3年前
Android图片处理工具类(持续积累补充)
package cn.mucang.android.community.utils;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Matrix;impo
Wesley13 Wesley13
3年前
BitmapFactory.decodeResource
BitmapFactory.decodeResource(?,?)这个带两个参数的方法:第一个参数是包含你要加载的位图资源文件的对象(一般写成getResources()就ok了);第二个时你需要加载的位图资源的Id。BitmapFactory.decodeResource(?,?,?)带三个参数的方法:前两个和上面的方法一样。第三个参数
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这