怎么样压缩数据?

基本定义

文件
是将数据存储在磁盘等存储媒介中的一种形式。程序文件中存储数据的单位是字节。文件的大小之所以用××KB、××MB 等来表示,就是因为文件是以字节(B = Byte)为单位来存储的

压缩比:压缩后文件大小 / 压缩前文件大小

常用压缩软件
1、LZH 是用 LHA 等工具压缩过的文件的扩展名。该压缩格式有时也称为 LZH 格式

2、ZIP 是用 PKZIP 等工具压缩过的文件的扩展名。该压缩格式有时也称为 ZIP 格式

3、日本人比较常用的压缩软件LHA,使用的就是哈夫曼算法,是吉崎荣泰开发的一款免费压缩软件

RLE 算法

例子
开始:尝试一下对存储着AAAAAABBCDDEEEEEF这17个半角字符的文件(文本文件)进行压缩

结果:A6B2C1D2E5F1是12个字符也就是12字节,因此结果就将原文件压缩了12字节÷17字节≒70%。
把文件内容用“数据 ×重复次数”的形式来表示的压缩方法称为 RLE(Run Length Encoding,行程长度编码)算法

应用
RLE算法经常被用于传真FAX等。G3类传真机是把文字和图形都作为黑白图像来发送的。由于黑白图像的数据中,白或黑通常是部分连续的,因此就没有必要再发送这部分数据的值(白或者黑),而只需附带上重复次数即可,这样压缩效率就得到了大幅提升。例如,像白色部分重复5次,黑色部分重复7次,白色部分重复4次,黑色部分重复6次这样的部分图像,就可以用5746这样的重复次数数字来进行压缩。

莫尔斯编码

定义:莫尔斯编码把一般文本中出现频率高的字符用短编码来表示,不常见的字符用长编码来表示
图:
在这里插入图片描述
结论
AAAAAABBCDDEEEEEF 这个文本,就变成了 A× 6 次 + B× 2 次+C× 1 次+D× 2 次+ E × 5 次+F × 1 次+字符间隔 × 16 = 4 位 × 6 次+ 8 位 × 2 次+9 位 × 1 次+6 位 × 2 次+1 位 × 5 次+8 位 × 1 次+ 2 位 × 16 次 = 106 位 ≒ 14 字节。

莫尔斯 VS 哈夫曼

思想差异
莫尔斯编码是根据日常文本中各字符的出现频率来决定表示各字符的编码的数据长度的

哈夫曼算法是指,为各压缩对象文件分别构造最佳的编码体系,并以该编码体系为基础来进行压缩
通过借助哈夫曼树构造编码体系,即使在不使用字符区分符号的情况下,也可以构建能够明确进行区分的编码体系

哈夫曼来进行压缩步骤
图:
在这里插入图片描述
结果
哈夫曼编码表示 AAAAAABBCDDEEEEEF,结果为 0000000000001001001101011010101010101111,40 位 = 5 字节(这里为不包含哈夫曼编码信息的情况)。压缩前的数据是 17 字符 = 17 字节,也就是说,我们惊奇地得到了 5 字节 ÷ 17 字节≒ 29% 这样高的压缩率

可逆压缩 与 非可逆压缩

无损压缩有:LZ77,LZ78,LZW, FLAC, WavPack, Monkey’s Audio, PNG, Tiff

有损的有(只能还原部分):mp3, mpeg1/2/4, h.264, h.265, avi, rm

相应格式普及:
1、BMP(Bitmap)是使用 Windows 自带的画笔来做成的一种图像数据形式。

2、JPEG(Joint Photographic Experts Group)是数码相机等常用的一种图像数据形式。

3、TIFF(Tag Image File Format)是一种通过在文件头中包含“标签”就能够显示出数据性质的图像数据形式。

4、GIF(Graphics Interchange Format)是由美国 CompuServe 开发的一种数据格式。这种格式要求色数不超过 256 色

为什么压缩不可逆?
类似于机器码不能够反编译为源代码一样,存在着差异性

Windows95/98处于16色或256色状态

16色:是指电脑屏幕上同时可以显示16种颜色,在16色下显示黑白的文本或简单的色彩线条是非常正常的

256色:顾名思义就是指能够后同时显示256种颜色

真彩色:24位图还不能表达自然界所有的色彩,但对于我们的眼睛来说它已经能以假乱真了,所以我们叫它。

可逆以及不可逆算法适用的情况分析

针对于图像的处理,依据需求的不同而进行灵活转变
针对于文本来说,一般采用可逆的压缩技术

发布了239 篇原创文章 · 获赞 78 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/weixin_39966065/article/details/104208432