多媒体编程
- 文字、图片、音频、视频
计算图片大小
加载大图片
- 图片大小的计算
图片大小=图片总像素*每个像素的大小
bmp格式为无损格式为严格按上述公式计算的 - 单色:只能表示两种颜色,只能使用两个数字即可,0和1 表示黑白
- 只需要使用一个长度为1 的二进制数字表示颜色
- 每个像素占用1/8个字节
- 16色:能表示16种颜色,需要16个数字
- 0-15,二进制表示:0000 -1111
*每个像素需要一个长度为4的二进制数字表示颜色信息
*每个像素占用1/2个字节
- 0-15,二进制表示:0000 -1111
- 256色:能表示256种颜色,需要256个数字
- 0-255,二进制表示000000000-11111111
- 每个像素需要长度为8的二进制数字
- 每个像素占用1个字节
- 24位色:能表示1千六百七十七万多种颜色
*每个像素占用3个字节- R 0-255,占用一个字节
- G 同上
- B 同上
- 32位色:支持透明色
通过舍弃图片像素信息(右眼不可辨别的)
jpeg png 为有损压缩,不按上述公式
加载大图片原理
android内存中加载图片是按照32位色加载图片的,因此一个像素大小为4字节。
压缩大图片
- 图片总像素:7680000
- 屏幕总像素:1533600
- 图片元素原始尺寸2400*3200
- 屏幕尺寸320 *480
- 宽的缩放比例:2400/320=7
- 高的缩放比例:3200/480=6
必须按原始比例 ,不能使用不同数字缩放,不然宽高会失真,图片人物就会显胖或者瘦。
如果按6比例压缩就会造成像素浪费 2400/6=400>320,浪费掉80 像素。
因此按7比例压缩时3200/7=457.会产生上下黑边,不过不影响使用。 - 两个比例不一样,取较大值
实现加载大图片
将图片的像素信息加载到内存中,和将图片文件加载到内存中不一样,图片的的像素信息为图片的 图片的总像素*每个像素所占的字节。
创建一个图片的副本
- 为什么要创建副本
-
有时候要对图片进行处理,加载图片的Bitmap是不能修改的
直接加载图片是不能修改的。
简单的特性处理
不是专业处理图片不用深入了解矩阵,谷歌有基本的效果矩阵。