图片无损压缩

来自计算思维百科
跳转至: 导航搜索
图片无损压缩.jpg

平时我们用手机拍照,拍了很多照片,要跟好友分享,但是图片文件太大了,我们怎么更快地传给好友呢?并且好友说尽量要原图。

解决方案-哈夫曼编码

一个办法是先把文件变小,然后传到好友那边后,好友再把图片按原样复原。通过对计算思维的学习之后我们思考一下怎么压缩图片才能实现无损呢?可能有人会想到我们曾经说过的哈夫曼算法。没错,哈夫曼编码可以实现图片的无损压缩以及解压缩。

第一步:统计各个数据出现的频率

第二步:构建哈夫曼树

我们不必知道这个树是怎么建立的,我们只要知道这个树构建完以后,就会出现一个规则,出现概率比较大的字符用比较短的二进制码表示,出现概率比较小的字符就用比较短的码字表示。例如在一篇文章中,“我”这个字出现了一百次,“烟”出现了2次,那么可以用0表示“我”,用100111010010101表示“烟”。

第三步:传输图片文件以及哈夫曼树(解码规则)给好友,好友接收到文件以后并不是直接打开文件,而是先进行解码。通过哈夫曼树,我知道0表示我,就按照哈夫曼树的规则来进行解码,最后得到原图。

运用的计算思维

哈夫曼编码其实可以看成是一种如何表示信息,使得信息的长度最短的一种方法。它通过统计信息中组成元素出现的频率,用比较短的二进制数字表示频率高的字符,用比较长的二进制字符表示频率比较低的字符,从而实现压缩。解压缩的时候,哈夫曼算法会根据压缩时建立的一种解码规则进行解压,最后原样复原成图片,运用的是优化的计算思维。