首先我们来了解一下四种存储模式
public static final Bitmap.Config ALPHA_8

public static final Bitmap.Config ARGB_4444

public static final Bitmap.Config ARGB_8888

public static final Bitmap.Config RGB_565

ARGB_8888、ARGB_4444、RGB_565、ALPHA_8
四种类型为bitmap在内存中存在的四种色彩的存储模式,他们本质区别体现在每种模式下的bitmap内部的每个像素点,在内存中的大小和组成成分的区别。
A->alpha(透明度),R->red(红色),G->green(绿色),B->blue(蓝色)
每种模式下的一个像素的具体存储大小:
ARGB_8888:(1像素占 4 byte)
A->8bit->一个字节,R->8bit->一个字节,G->8bit->一个字节,B->8bit->一个字节,即8888,一个像素总共占四个字节,8+8+8+8=32bit=4byte
ARGB_4444:(1像素占 2 byte)
A->4bit->半个字节,R->4bit->半个字节,G->4bit->半个字节,B->4bit->半个字节,即4444,一个像素总共占两个字节,4+4+4+4=16bit=2byte
RGB_565:(1像素占 2 byte)
R->5bit->半个字节,G->6bit->半个字节,B->5bit->半个字节,即565,一个像素总共占两个字节,5+6+5=16bit=2byte
ALPHA_8:(1像素占 1 byte)
A->8bit->一个字节,即8,一个像素总共占一个字节,8=8bit=1byte
计算大小方式:
一张bitmap的大小 = 有多少个像素点 * 每个像素点内存中占用的大小 = 长 * 宽 * 3中讲的各种模式下对应的像素点占用的比特位
例子:计算一张长宽为1000/1000,ARGB_8888格式的一张bitmap的大小:
1000 * 1000 * 4byte = 4000kb = 4M

Bitmap中有专门获取占用内存大小的方法
getAllocationByteCount()//API 19
getByteCount()//API 12

也可以直接 使用 bitmap.getRowBytes() * bitmap.getHeight();

/** * 得到bitmap的大小 */  public static int getBitmapSize(Bitmap bitmap) {  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {    //API 19  return bitmap.getAllocationByteCount();  }  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) {//API 12  return bitmap.getByteCount();  }  // 在低版本中用一行的字节x高度  return bitmap.getRowBytes() * bitmap.getHeight();                //earlier version  }

Bitmap计算大小方式相关推荐

  1. 结构体计算大小与位域计算大小

    结构体的大小计算 原则一:结构体的元素按顺序存储,结构体成员的偏移量必须是成员大小的整数倍 原则二:结构体大小是所有成员大小的整数倍(除了内部结构体和数组) 看例子比较快理解,以下是自己的理解 指针的 ...

  2. iOS tabbar 图片,最佳大小方式

    iOS tabbar 图片,最佳大小方式 文档大小 30 *30 retaina 60 *60 最佳大小 48 *32 参考:http://stackoverflow.com/questions/15 ...

  3. Android调整Bitmap图片大小

    #Android调整Bitmap图片大小 /*** 调整图片大小* * @param bitmap* 源* @param dst_w* 输出宽度* @param dst_h* 输出高度* @retur ...

  4. android 加载网络图片,并压缩bitmap内存大小

    /*** 根据图片的url路径获得Bitmap对象, 有压缩效果的,占用内存小了,* @param url* @return*/public static Bitmap returnBitmap(St ...

  5. arcgis画线根据长度_如何使用Arcgis进行画线与面并计算大小?

    本篇文章给大家来了的内容是介绍如何使用Arcgis进行画线与面并计算大小?有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 在使用Arcgis API for JavaScript进行 ...

  6. Android—Bitmap图片大小计算、压缩与三级缓存

    Bitmap对象占用内存大小: bitmap.getByteCount() 图片所占内存大小计算方式:图片长度 x 图片宽度 x 一个像素点占用的字节数. Android Bitmap使用的三种颜色格 ...

  7. android bitmap大小计算,android 之Bitmap 内存大小计算

    QQ截图20180426154121.png 想要知道一个Bitmap 占用多大内存 我们只需要调用getByteCount方法就可以了,但是不可能每次都将图片塞到项目中然后把运行看吧,所以我们必须要 ...

  8. android bitmap内存大小,Android——Bitmap占用的内存大小

    一.作用 知其然 二.概念 1. 几个小概念 像素:组成画面的基本单位,像素没有物理尺寸.可以任意缩放去适配显示屏的像素点大小.不同设备上一个单位像素色块的大小是不一样的 (2)dp 设备独立像素,用 ...

  9. 使用Arcgis进行画面(线)并计算大小(长度)。

    在使用Arcgis API for JavaScript进行做地图开发的过程中,在地图进行画线.画面是经常使用的功能.本文主要介绍这一功能. 本文适用Arcgis API版本:Arcgis API f ...

最新文章

  1. 夏季编辑系统的联想感觉
  2. .重要开源协定的比较以及区别
  3. 迈入大数据时代 12项实名制助推平安建设精细化
  4. JAVA语言程序设计课后习题----第四单元解析(仅供参考)
  5. hdu2019——数列有序解题报告
  6. Qt QProcess执行Linux 命令行的方法
  7. 利用css和js实现页面的标签效果。(标签个数可以动态变化)
  8. 大数据分析的价值体现
  9. Hibernate ehcache配置二级缓存及说明
  10. 新建文件没有word、ppt、excel,office图标显示为白色,不能正常显示
  11. 大学语文复习详细资料
  12. stata构建ARIMA模型并作预测,命令及过程
  13. OpenCASCADE(OCC)读取STEP模型文件到XDE中
  14. 快速上手Total Commander的经验分享
  15. Linux GCC简明教程(使用GCC编译C语言程序)
  16. python应用程序无法正常启动0xc0000142_应用程序无法正常启动(0xc0000142)的解决办法...
  17. 无法右键保存 图片 html,谷歌浏览器不能保存图片怎么办_谷歌浏览器右键不能保存图片的解决方法-系统城...
  18. 如何通过python获取股票行情信息?
  19. jdk11下载、安装及环境配置详解(win10环境)
  20. 大学计算机的区位码国标码机内码,[计 算 机]汉字区位码\国标码\机内码之间的换算...

热门文章

  1. 检测手机电池状态的代码
  2. Android app开发捷径,让你少去踩坑 1
  3. linux系统sudo命令详解
  4. IDEA 社区版本(CE)Spring配置
  5. UPX快速定位OEP
  6. Linux常用命令——apt-get
  7. 详述-Explain执行计划
  8. 车间忙的热火朝天,实则效益很低?
  9. 什么是股票期权?股票期权激励是什么?
  10. 盒子尺寸、轮廓和圆角