文件压缩是如何工作的?

软件工程师一直在开发新的方法,将大量数据拟合到一个小空间中。当我们的硬盘很小的时候,这是真的,互联网的出现使它变得更加重要。文件压缩在连接我们的过程中扮演着重要的角色,它让我们能够发送更少的数据,这样我们就可以更快地下载,并在繁忙的网络上建立更多的连接。...

文件压缩是如何工作的?

软件工程师一直在开发新的方法,将大量数据拟合到一个小空间中。当我们的硬盘很小的时候,这是真的,互联网的出现使它变得更加重要。文件压缩在连接我们的过程中扮演着重要的角色,它让我们能够发送更少的数据,这样我们就可以更快地下载,并在繁忙的网络上建立更多的连接。

那么它是如何工作的呢?

要回答这个问题,需要解释一些非常复杂的数学,当然这超出了我们在本文中所能涵盖的范围,但是您不需要确切地理解它是如何在数学上工作的,就可以理解基础知识。

最流行的文本压缩库依赖于两种压缩算法,同时使用这两种算法可以获得非常高的压缩比。这两种算法是“LZ77”和“哈夫曼编码”,哈夫曼编码是非常复杂的,我们在这里不详细讨论。首先,它使用一些花哨的数学来为单个字母分配较短的二进制代码,在这个过程中缩小了文件大小。如果您想了解更多,请查看这篇关于代码如何工作的文章,或者这篇Computerphile的解释文章。

另一方面,LZ77相对简单,这就是我们在这里要讨论的。它试图删除重复的单词,并用一个较小的“关键字”来代替它们。

以这篇短文为例:

文件压缩是如何工作的?

LZ77算法将查看此文本,意识到它将“howtogeek”重复三次,并将其更改为:

文件压缩是如何工作的?

然后,当它想读回文本时,它会用“howtogeek”替换(h)的每个实例,使我们回到原来的短语。

我们称这种压缩为“无损”压缩——输入的数据与输出的数据相同。什么也没丢。

实际上,LZ77不使用键列表,而是用内存中的链接替换第二个和第三个匹配项:

文件压缩是如何工作的?

所以现在,当它到达(h)时,它将回顾“howtogeek”并阅读它。

如果你对更详细的解释感兴趣,这段来自Computerphile的视频非常有用。

这是一个理想化的例子。实际上,大多数文本都是用只有几个字符的键来压缩的。例如,单词“the”即使出现在“there”、“their”和“then”这样的单词中,也会被压缩。通过重复的文本,可以得到一些疯狂的压缩比。把这个单词“howtogeek”的文本文件重复100次。原始文本文件的大小为3KB。不过,压缩后只需要158字节。压缩率接近95%。

文件压缩是如何工作的?

很明显,这是一个非常极端的例子,因为我们只是一遍又一遍地重复同一个词。在一般实践中,使用压缩格式(如ZIP)对主要是文本的文件进行压缩,可能会得到大约30-40%的压缩。

顺便说一句,这个LZ77算法适用于所有二进制数据,而不仅仅是文本,尽管文本通常更容易压缩,因为大多数语言使用了多少重复的单词。例如,像汉语这样的语言可能比英语更难压缩。

图像和视频压缩是如何工作的?

文件压缩是如何工作的?

视频和音频压缩的工作原理非常不同。与文本不同的是,文本可以进行无损压缩,并且不会丢失任何数据,而图像可以进行所谓的“有损压缩”,即丢失一些数据。压缩的越多,丢失的数据就越多。

这就是人们上传、分享和截屏多次的那些看起来可怕的jpeg的原因。每次压缩图像时,都会丢失一些数据。

下面是一个例子。这是我拍的一张截图,根本没有被压缩。

文件压缩是如何工作的?

然后,我把截图在Photoshop上运行了多次,每次都以低质量JPEG格式导出。结果是这样的。

文件压缩是如何工作的?

看起来很糟,对吧?

好吧,这只是最坏的情况,每次以0%的JPEG质量导出。为了比较,这里有一个50%的质量JPEG,这是几乎无法区分的源PNG图像,除非你把它放大,仔细看看。

文件压缩是如何工作的?

此图像的PNG大小为200KB,但此50%质量的JPEG仅为28KB。

那么它是如何节省这么多空间的呢?好吧,JPEG算法是一项伟大的工程。大多数图像存储一个数字列表,每个数字代表一个像素。

JPEG不做这些。取而代之的是,它用一种叫做离散余弦变换的东西来存储图像,这种变换是以不同强度叠加在一起的正弦波的集合。它使用了64个不同的方程式,但其中大部分都没有被使用。这就是Photoshop和其他图像应用程序中JPEG的质量滑块选择要使用多少个公式的原因。然后应用程序使用哈夫曼编码进一步减小文件大小。

这使得jpeg具有极高的压缩比,根据质量的不同,可以将多兆字节的文件压缩到几千字节。当然,如果你用得太多,你会得到这样的结果:

文件压缩是如何工作的?

那形象太可怕了。但是少量的JPEG压缩会对文件大小产生很大的影响,这使得JPEG对于网站上的图像压缩非常有用。你在网上看到的大多数图片都经过压缩以节省下载时间,特别是对于数据连接不好的移动用户。事实上,所有关于如何极客的图片都被压缩了,以使页面加载更快,而且你可能从未注意到。

视频压缩

文件压缩是如何工作的?

视频的工作原理与图像有点不同。你可能会认为他们会用JPEG压缩每一帧视频,他们当然会这么做,但是有一个更好的方法来压缩视频。

我们使用一种叫做“帧间压缩”的方法,它计算每一帧之间的变化并只存储这些变化。所以,举个例子,如果你在一个视频中有一个相对静止的镜头,它占用了几秒钟的时间,就会节省很多空间,因为压缩算法不需要存储场景中所有不变的东西。帧间压缩是我们拥有数字电视和网络视频的主要原因。如果没有它,视频将达到数百千兆字节,超过2005年YouTube推出时的平均硬盘大小。

另外,由于帧间压缩最适合静止视频,这就是为什么彩色纸屑会破坏视频质量。

注意:GIF不能做到这一点,这就是为什么动画GIF通常非常短和小,但仍然有一个相当大的文件大小。

关于视频,另一件要记住的事情是它的比特率——每秒允许的数据量。例如,如果您的比特率是200kb/s,您的视频将看起来非常糟糕。质量随着比特率的提高而提高,但是在每秒几兆字节之后,你得到的回报就越来越小。

这是从水母的视频中拍摄的缩放帧。左边的是3Mb/s,右边的是100Mb/s。

文件压缩是如何工作的?

文件大小增加了30倍,但质量没有多大提高。一般来说,YouTube视频的速度大约为2-10Mb/s,这取决于你的连接,因为更多的视频可能不会被注意到。

这个演示在实际视频中效果更好,所以如果你想亲自查看,你可以下载这里使用的相同比特率测试视频。

音频压缩

文件压缩是如何工作的?

音频压缩的工作原理与文本和图像压缩非常相似。当JPEG从图像中删除你看不到的细节时,音频压缩也会对声音进行同样的处理。你可能不需要听到吉他在弦上的吱吱声,如果实际的吉他是非常,非常响亮。

MP3也使用比特率,从48和96 kbps的低端(低端)到128和240 kbps(相当不错)到320 kbps(高端音频),你可能只会听到非常好的耳机(和耳朵)的区别。

也有用于音频的无损压缩编解码器,主要的是FLAC,它使用LZ77编码来提供完全无损的音频。有些人发誓FLAC的完美音质,但随着MP3的流行,似乎大多数人要么说不出来,要么不介意的区别。

  • 发表于 2021-04-05 01:55
  • 阅读 ( 170 )
  • 分类:互联网

你可能感兴趣的文章

压缩的html是如何工作的以及为什么需要它

... 在本文中,我们将讨论缩小HTML文件的两种主要方法,为什么要缩小HTML文件,以及如何缩小。 ...

  • 发布于 2021-03-14 09:00
  • 阅读 ( 312 )

如何压缩pdf文件,减小文件大小,并使其变小

PDF文件可能过大。幸运的是,有许多易于使用的程序可以将一个超大的PDF文件压缩成更容易发送电子邮件和在线共享的文件。下面有四个选项介绍如何压缩PDF文件并使其变小。 ...

  • 发布于 2021-03-18 08:43
  • 阅读 ( 531 )

如何在mac上压缩文件

在Mac上保存存储的方法之一是压缩文件。这样做可以让您在计算机的相同存储容量上存储更多的文件。 ...

  • 发布于 2021-03-26 21:26
  • 阅读 ( 252 )

如何在windows10中解压文件

每个人都应该知道的一个基本Windows函数是如何解压缩文件。这并不难,事实上,这个选项就在操作系统内部。 ...

  • 发布于 2021-03-27 04:26
  • 阅读 ( 456 )

在Windows10上创建zip文件的6种简单方法

... PC上创建ZIP存档?你这么做有很多原因。也许您想将多个文件合并到一个存档中?或者你想通过压缩压缩压缩文件来减小文件的大小? ...

  • 发布于 2021-03-28 11:34
  • 阅读 ( 345 )

如何在mac上制作zip文件

如果你想在你的Mac上**一个ZIP文件,有很多方法可以做到。macOS提供了内置的工具,但也有第三方应用程序可以让你在Mac上创建ZIP档案。 ...

  • 发布于 2021-03-28 16:40
  • 阅读 ( 336 )

在iphone上压缩视频的5种方法

...量录制视频。然而,这样做的缺点是视频最终会有巨大的文件大小。由于大多数社交媒体服务都限制了共享的文件大小,因此您可能想知道如何使您的iPhone视频变小。 ...

  • 发布于 2021-03-29 20:26
  • 阅读 ( 2760 )

如何压缩视频并减小文件大小

...这样。幸运的是,您可以使用多种方法压缩视频并减小其文件大小。 ...

  • 发布于 2021-03-29 20:56
  • 阅读 ( 422 )

如何在iphone和ipad上快速压缩和解压文件

从历史上看,苹果在iPhone和iPad上处理Zip文件相当困难。现在,从ios13和ipados13开始,苹果已经在files应用程序中集成了对Zip文件的本机支持。下面是它的工作原理。 如何在iphone和ipad上压缩文件 文件应用程序在ios13和ipados13上得...

  • 发布于 2021-04-02 10:36
  • 阅读 ( 204 )

如何发送带有嵌入式视频的powerpoint演示文稿

...嵌入的视频一起发送,则需要将它们打包在一起。 创建文件夹 首先,您将创建一个文件夹来存储PowerPoint和视频文件。请注意,在将视频嵌入演示文稿之前,您需要这样做。如果在嵌入视频文件后更改其位置,则该视频将不再...

  • 发布于 2021-04-03 05:56
  • 阅读 ( 165 )
qw364060
qw364060

0 篇文章

相关推荐