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好的多。
粗浅了解,欢迎大神补充。