1. 压缩分类 1.1. 多媒体数据压缩(media-specific compression) 1.2. 通用压缩(general purpose compression) 2. 有损压缩算法 2.1. 为了使数据压缩得更小,可以牺牲多媒体的质量这样的数据转换 2.2. 针对特定的多媒体文件 2.2.1. 针对图像文件的算法就不太适用于音频文件 2.3. 针对内容类型 2.3.1. 灰度图像与全彩图像使用的压缩算法不同 2.4. 有损压缩工具通常会被首先应用,以减少数据的动态变化范围,从而为进一步的无损压缩做准备 2.5. 有损压缩工具其实有无限多种,选择哪一种取决于需要处理的数据类型、你的需求以及用户愿意容忍多大范围的失真 3. 一图胜千言 3.1. 图像是通过二维网格中的像素来显示的,这些像素表示的是图像本身的颜色 3.2. 一张1024×1024的RGB色彩模式的图片,其大小就有3 MB 3.3. 用ASCII码来表示字母的话,同样的空间能用来表示3145728个字母 3.4. 《霍比特人》一书只有95022个单词 3.4.1. 假定平均每个单词由5个字母组成,那么这本书大约有475 110个字母 3.5. 一张1024×1024的图片所占用的空间,可以用来存放约6本《霍比特人》这样篇幅的书 3.6. 当你考虑减少应用程序的数据所占用的空间时,图像应该是你最先关注的 3.6.1. 这是最容易实现的目标,而且常常是小的改变就能带来大的收获 4. 图像质量与文件大小 4.1. 图像压缩工具会提供一个整数参数,让你来决定图像的质量 4.2. 对于级别在75~100的JPG压缩,通常用户只能感受到很小的质量差别 4.3. 当质量值为75时对普通用户来说很多图片看着挺好,但是其文件大小只有质量值为95时的一半 4.4. 当质量值低于75时,图片看起来就变差很多,并且节省的空间也在逐渐递减 4.5. 导致图像压缩出现视觉问题的最常见的两种形式 4.5.1. 量化(quantization) 4.5.2. 区块化(blocking) 4.6. 评价图像数据指标 4.6.1. 峰值信噪比(peak signal-to-noise ratio,PSNR) 4.6.1.1. 表示一个信号的最大可能功率与影响它的表示精度的破坏性噪声功率的比值(以对数分贝为单位) 4.6.1.2. 这一度量的基础是压缩图片的均方误差(mean-square error,MSE) 4.6.1.2.1. PSNR与MSE之间,存在着反比关系 4.6.1.3. 原始图像的值与压缩后的值差别有多大 4.6.2. 结构相似性(structural similarity index,SSIM) 4.6.2.1. 在比较图像的压缩质量时考虑了人眼的感知情况 4.6.2.2. 通过比较源图像与压缩后图像的边缘相似性来实现的 5. 图像的尺寸 5.1. 将全分辨率的图像发送到设备上,在渲染前再调整大小,对开发人员来说,这样做肯定最省事 5.2. 缺点也很明显,我们将用户不需要(也不会看)的数据发给了他们 5.3. 发送合适大小的图像给用户 5.3.1. 发送的数据量更少了,这会更快,也会节省用户的套餐费用 5.3.2. 可以节省用户的设备空间 5.3.3. 无须再调整图像的大小 5.3.4. 解码会更快,加载会更快,显示也会更快 5.3.5. 向小屏幕发送小尺寸的图像 6. 正确的图像格式 6.1. PNG 6.1.1. 1995年由7名工程师组成,开发了PNG这种全新的、无专利权的数据格式 6.1.2. 便携式网络图像格式(Portable Network Graphics format,PNG) 6.1.3. 无损图像格式 6.1.4. 使用GZIP这样的压缩工具使数据量变小 6.1.5. 在图像保存为PNG格式之前,进行一些有损的预处理,来提高图像的压缩率 6.1.6. 你想压缩的是颜色比较少的图像,比如手绘的卡通画,那么PNG对应的无损压缩工具表现得会更好 6.2. JPG 6.2.1. 用于摄影图像的格式 6.2.2. 不支持alpha透明度 6.2.3. 分块过程只对摄影图像(即照片)适用 6.2.4. 大多数移动设备现在有系统可用的JPG编码和解码的硬件 6.2.4.1. 解码一个JPG文件需要的时间要比解码同样大小的PNG文件短很多 6.3. GIF 6.3.1. 第一步是有损的色彩数量压缩,将整个图像的颜色数量减少到只有256种 6.3.2. 第二步则是无损的LZW压缩 6.4. WebP 6.4.1. 2013年,谷歌和其他开源贡献者开发了一种新的图像编解码算法 6.4.2. 介于PNG和JPG之间的中间地带 6.4.3. 既支持无损模式和透明度,同时也支持有损模式 6.4.4. 在有损压缩模式下的高压缩率,也就意味着在解压时它要比JPG或者PNG格式慢一些 6.4.5. 即使某个算法在技术上是先进的,它还是会受到与此相关的同类技术产品偏见的影响,同时它也必须获得具有普遍怀疑精神的工程师的承认和认同 6.4.5.1. Mozilla的抵制 7. GPU纹理格式 7.1. 计算机不能直接利用压缩格式的数据绘制图像,而是需要先将压缩的数据加载到内存中,然后再解压为系统可以直接渲染的格式 7.2. 图像会被当作纹理传输到GPU中 7.2.1. 生成的每一个位图都会同时需要CPU和GPU内存 7.3. GPU能直接渲染的像素压缩格式是存在的 7.3.1. DXT、ETC和PVR就是几种这样的有损像素压缩格式 8. 光栅格式图像 8.1. raster format image 8.2. 当从远处观察图像时,像素之间的边缘就会消失,这样人的眼睛(被欺骗了)看到的就是平滑的颜色渐变。这种类型的图像通常被称为光栅格式图像 8.3. 可以(比较直接地)在屏幕上渲染 8.4. 光栅格式则适用于相片以及其他信息密集的图像 9. 矢量格式 9.1. SVG是一种常用的矢量图像格式 9.1.1. 无论源数据多大,有了它,我们就能用很少的内存来描述图像,并在客户端生成高质量的与分辨率无关的图像 9.2. 矢量格式适用于标志、技术图纸以及简单的图像样式