跳到主要内容
ConvertOwl
技术阅读需 1 分钟作者 ConvertOwl

有损压缩和无损压缩到底有什么区别?

有损压缩靠丢掉数据换来更小的文件,无损压缩则保留每一个比特。本文讲清两者的原理、常见格式各属哪类,以及什么时候该选哪种。

像素风格的猫头鹰戴着学士帽,指着两块面板:一边是丢弃数据的有损压缩,一边是保留每个像素的无损压缩

文件每变小一次,背后只可能是两种情况之一。要么数据被更高效地重新写了一遍,可以原样还原(无损压缩);要么有一部分数据被有意丢掉了,因为你大概率察觉不到(有损压缩)。有损压缩和无损压缩的区别就这么简单。知道一个工具用的是哪一种,你就知道还能不能拿回原文件。

这篇指南会讲清两种方式各自怎么工作、日常常见的格式分别属于哪一类,以及在点下保存之前该怎么选。

一句话回答#

无损压缩在缩小文件的同时,保证它能逐比特还原;有损压缩则通过永久丢弃不易察觉的细节,把文件压得更小。 装着报税材料的ZIP必须是无损的,因为哪怕改动一个字节,都可能让某个数字出错。网页上的一张照片则可以是有损的,因为那几千个被近似处理的像素,没有人看得出来。

无损压缩的原理#

无损压缩找的是冗余:那些可以写得更短、又不丢任何信息的规律。如果一行像素是“蓝、蓝、蓝、蓝、蓝”,就可以存成“5 × 蓝”。如果一段文字在文档里反复出现,后面的重复部分就可以换成一个指回第一次出现位置的短指针。ZIP和PNG背后的DEFLATE算法(定义见RFC 1951)正是把这两招结合在一起。

关键在于:解压能把这个过程完美逆转,出来的数据和放进去的一模一样,精确到最后一个比特。问题是,能省多少完全取决于数据里有多少冗余。纯文本和简单图形能压得很小;已经压缩过或本身噪点很多的数据几乎压不动,这也是为什么把一文件夹照片打成ZIP,体积几乎不变。

有损压缩的原理#

有损压缩更进一步。在寻找冗余之前,它会先判断哪些信息对人眼或人耳最不重要,然后把它们简化或去掉。比如JPEG保存细微色彩细节的精度低于亮度,因为人眼对亮度变化更敏感。MP3则会去掉那些被邻近频率上更响的声音掩盖住的声音。

正因为允许改动数据,有损压缩能把文件压到无损方法永远达不到的大小。大多数有损格式还能让你决定丢掉多少:JPEG的质量滑块、MP3的码率、视频的码率或CRF值。设置越高,保留的细节越多,文件也越大;设置越低,文件越小,但画面(或声音)上的瑕疵也越明显。MDN的图片格式指南介绍了JPEG的有损编码在不同质量下的表现。

这种取舍是永久的。细节一旦被丢掉,任何工具都无法把它重建出来。

常见格式各属哪一类#

类型无损有损
图片PNG、GIF、TIFF(通常)、无损WebP、无损AVIFJPEG、有损WebP、有损AVIF、HEIC
音频FLAC、ALAC、WAV(未压缩)MP3、AAC、Ogg Vorbis、Opus
视频除专业剪辑外很少见MP4(H.264/H.265)、WebM(VP9/AV1)、MOV
文档和压缩包ZIP、7z、PDF里的文字和矢量内容PDF里嵌入的图片通常是JPEG

有两个细节很容易被忽略。一是有些格式两种模式都支持,所以一个WebP或AVIF文件可能是有损的,也可能是无损的。二是PDF其实是一个容器:里面的文字是无损的,但嵌入的照片常常用JPEG压缩过。这正是我们的PDF压缩工具按你选择的质量重新编码内嵌图片、而完全不动文字和矢量线条的原因。

为什么有损文件越存越差#

每次打开一张JPEG再存成JPEG,编码器都会对那些本就被近似过的像素再做一次有损处理。损伤会不断累积:更模糊一点,方块感更重一点,色带更明显一点。这叫代际损失(generation loss),也是人们无意中把照片毁掉最常见的方式。

解决办法很简单:保留一份原图(或一份无损的工作副本),需要有损版本时都从它导出,而不是对同一个有损文件反复编辑、反复保存。如果一张JPEG要改好几次,先用JPG转PNG得到一份无损工作副本,之后怎么保存都不会继续变差。

有损转无损,画质回不来#

把MP3转成FLAC,或者把JPEG转成PNG,得到的只是有损文件的无损副本。文件变大了,但包含的细节和有损源文件完全一样,连瑕疵也一并保留。第一次有损编码时丢掉的东西,已经回不来了。

决定要保留哪个版本时,这一点很重要。质量最好的母版永远是最早的那一份:相机拍出的原图、CD抓轨、录音棚的WAV。音频方面,我们的最适合音乐的音频格式一文讲了什么时候值得保留FLAC,什么时候MP3就足够了。

什么时候选有损#

当文件是拿来看或听的,而不是拿来编辑的,而且体积很重要时,选有损压缩:

  • 用于网站、邮件和社交媒体的照片。 用合适的质量设置过一遍图片压缩工具,往往能大幅减小体积,肉眼几乎看不出变化。怎么选这个设置,可以看我们的如何压缩图片而不损失画质。
  • 在手机、车上和日常收听的音乐。 用FLAC转MP3转换无损专辑(最高320 kbps编码),得到的文件小得多,用普通耳机听依然很好。
  • 各种视频。 日常视频几乎都是有损的;未压缩的视频太大,根本没法存储或在线播放。

什么时候选无损#

当每一个比特都很重要,或者文件之后还要再编辑时,选无损压缩:

  • 文档、表格、代码和压缩包。 改动一个字节就可能让它们损坏,所以ZIP这类格式一律是无损的。
  • 截图、Logo、示意图和图片里的文字。 有损压缩容易把锐利的边缘弄糊,还会在文字周围产生光晕。PNG能让它们保持清晰。如果确实需要把一张接近照片的PNG变小,有损的做法是用PNG转JPG。
  • 母版和存档。 留好原图、FLAC抓轨或全质量导出的文件,之后需要有损副本时从它导出,就不会一层层叠加代际损失。

常见问题#

有损压缩和无损压缩的主要区别是什么? 无损压缩缩小文件的方式可以完全逆转,解压后的文件和原文件一模一样;有损压缩则会永久删除部分细节,以换取小得多的文件。

PNG是有损还是无损? PNG是无损格式:它用DEFLATE算法压缩图片,所以保存时每个像素都被原样保留,不会丢掉任何东西。

JPEG一定是有损的吗? 实际使用中是的:相机、手机和图片编辑软件生成的JPEG文件都是有损的,因为即使在最高质量设置下,编码器也会为了节省空间对色彩和细节做近似处理。

有损文件能转回无损画质吗? 不能,把MP3或JPEG这类有损文件转成FLAC或PNG这类无损格式,只能保住它当前的画质或音质,无法找回第一次有损编码时丢掉的细节。

压缩PDF会降低质量吗? 压缩PDF通常只对其中的图片做有损压缩,文字和矢量图形保持无损,依然完全清晰。

有损压缩和无损压缩哪个更好? 两者没有绝对的好坏:文件必须保持原样或之后还要编辑时,选无损;更小的文件比看不见的细节更重要时,选有损。

要点总结#

  • 无损 = 文件变小,解压后数据完全相同。ZIP、PNG、FLAC和PDF中的文字都用这种方式。
  • 有损 = 文件小得多,部分细节被永久删除。JPEG、MP3、AAC和几乎所有视频都用这种方式。
  • 反复保存有损文件会造成代际损失,应该始终从原文件出发。
  • 有损转无损只会让文件变大,永远找不回丢掉的东西。
  • 想进一步了解压缩格式背后的原理,可以看看博客的技术栏目,也可以试试免费的图片压缩工具和PDF压缩工具,它们完全在浏览器里运行,文件不会离开你的设备。

试用这些工具

免费、私密、即时,一切都在你的浏览器中运行。

像素风格的猫头鹰看着一个装有照片、音乐和文档的100MB文件夹压缩后只变成96MB
技术1 分钟

为什么ZIP文件压缩不了多少?

把一堆照片或视频打包成ZIP,体积几乎不变。这里讲清楚为什么ZIP对已经压缩过的文件几乎榨不出什么空间。

像素风格的猫头鹰坐在笔记本电脑前,面板上显示格式、编码器、分辨率、码率和帧率等视频压缩设置
技术1 分钟

视频压缩最佳设置详解

分辨率、码率、编码器和帧率:真正决定视频文件大小的设置,每一项该怎么选,哪些又不该动。