Android多媒体编程——图片


项目中涉及到了图片的存储和保存。但是为了避免oom的出现,需要了解一些关于图片大小计算的知识


图片

图片在计算机中的大小
图片的压缩方式
  • 计算机中的图片表示形式有jpeg bmp gif png等,其中bmp的是无损压缩的,下面就以bmp无损压缩的格式,其它的都是以压缩像素大小来进行图片保存
  • 有损压缩就是以牺牲图片的像素来进行压缩
  • 举例来说:
  • 表示一个颜色 矩阵:
  • 原图片色表示为
  • 0,0,0
  • 1,1,1
  • 2,2,2
  • 3,3,3
  • 4,4,4 这些RGB表示不同的颜色
  • 为了减小图片大小有损压缩,则减少图片的种类
  • 2,2,2 只会保留一种或者少量的颜色信息,达到减少图片大小的目的
计算机中图片大小的计算
  • 图片的总大小 = 图片的总像素 * 每个像素占用的大小
  • 单色位图:只能表示2种颜色
  • 使用两个数字:0和1
  • 使用一个长度为1的二进制数字就可以表示了
  • 每个像素占用1/8个字节
  • 16色位图:能表示16种颜色
  • 需要16个数字:0-15,0000 - 1111
  • 使用一个长度为4的二进制数组就可以表示了
  • 每个像素占用1/2个字节
  • 256色位图:能表示256种颜色
  • 需要256个数字:0 - 255,0000 0000 - 1111 1111
  • 使用一个长度为8的二进制数字
  • 每个像素占用1个字节
  • 24位位图:
  • 每个像素占用24位,也就是3个字节,所在叫24位位图
  • R:0-255,需要一个长度为8的二进制数字,占用1个字节
  • G:0-255,需要一个长度为8的二进制数字,占用1个字节
  • B:0-255,需要一个长度为8的二进制数字,占用1个字节

下面两张图片分别采用不同的格式保存

bmp: 

大小为21.9m 

jpeg: 

大小为1.73m

可以看出颜色上并没有太大差距,但是当放大到像素级别时 可以看出bmp的颜色丰富程度要比jpeg好的多。

粗浅了解,欢迎大神补充。