什么是图像压缩?

压缩一个图像可以减少其文件大小。 图像压缩可以是有损的,也可以是无损的。

学习目标

阅读本文后,您将能够:

  • 定义图像压缩
  • 解释为什么压缩对图像优化很重要
  • 有损与无损图像压缩的对比
  • 了解常见的图像压缩方法和算法

相关内容


想要继续学习吗?

订阅 TheNET,这是 Cloudflare 每月对互联网上最流行见解的总结!

参阅 Cloudflare 的隐私政策,了解我们如何收集和处理您的个人数据。

复制文章链接

使用 Cloudflare Pro 和我们的速度工具插件提升网站性能

什么是图像压缩?

图像压缩是一个使图像文件变小的过程。 图像压缩最常见的工作方式是删除图像中的信息字节,或使用图像压缩算法,以占用较少存储空间的方式重写图像文件。 压缩图像是一种有效的方法,可以确保在用户与网站或应用程序互动时快速加载图像。 它是 图像优化的一个重要组成部分

例如,下面是一个大小为 96 KB 的图像:

96 KB 的地球示例图像

这是同一张图片,压缩至 70 KB:

70 KB 的地球示例图像

此处压缩至 35 KB:

35 KB 的地球示例图像,图像模糊

为什么图像压缩很重要?

压缩的图像比未压缩的图像加载更快。 这很重要,因为网页和应用程序的加载速度对 SEO转换率、用户的 数字体验,以及其他关键指标都有巨大影响。 提高 网络性能 是开发人员优化网站的主要方式之一。

图像压缩通常与 其他方法同时使用, ,以提高网络性能。 例如, CDN 缓存内容,以更快地提供给终端用户。 负载平衡 ,有助于防止网络服务器过载。 使用 lazy loading ,可以让网页中最重要的内容加载得更快。 然而,总的来说,图像压缩往往是修复缓慢的页面性能的最快速的方法之一。

什么是有损图像压缩?

考虑到一个旅行者为旅行打包衣服。 旅行者有可能把衣橱里的所有东西都装进去,从鞋子、帽子到正装。 但这样的做法导致旅客需要携带大量的行李,拖慢了他们的速度,也许还要花更多的钱来运输。 相反,旅行者选择最重要的衣物,并将其装入一个手提箱。

就像我们的旅行者不需要收拾他们的整个衣柜一样,人们很少需要以最大的分辨率和最大的尺寸观看整个图像。 (最常用的桌面屏幕尺寸是1680x1050像素,而最常用的移动屏幕尺寸甚至更小,为360x800像素)。 即使在这些尺寸下,一幅图像占据整个屏幕的情况也很罕见)。 通常情况下,一幅图像可以在质量和尺寸上有所降低,而典型的观看者却无法察觉--这种方法被称为"有损的" 图像压缩。

有损图像压缩保留了图像最重要的信息,而没有保留每一个像素。 有几种类型的有损压缩算法,下面将详细介绍。 但所有的工作都是从图像文件中删除信息,使文件由更少的字节组成。

有损的图像压缩方法

网络上托管的许多图像都是使用有损压缩的文件格式。 这确保了图像的快速加载和不使用过多的带宽。 有损压缩方法的常见例子包括:

  • JPEG: 这种文件格式以联合摄影专家组的名字命名,可能是使用最广泛的图像压缩方法。 它通常可以按10:1的比例压缩文件,而对图像质量的降低却很小。 较新版本的JPEG包括JPEG 2000和JPEG XR,但许多浏览器不支持这些格式。
  • WebP: 虽然WebP也支持无损压缩,但它更常用于有损图像压缩。 谷歌最初开发WebP是为了取代JPEG、PNG和GIF文件格式。
  • 高效图像格式(HEIF): 高效图像格式(HEIF)是一种用于压缩图像的容器文件。 用这种方法压缩的图像有时被称为HEIC文件。

什么是无损图像压缩?

如果我们的旅行者想要的衣服不适合放在行李箱中,他们可以尝试重新折叠和重新安排衣服,使其更适合。 同样,"无损" 图像压缩使用数学算法来重写一个图像文件,而不删除任何信息。 经过无损压缩处理的图像应该与原始图像基本相同,但文件大小应该小得多。

虽然无损压缩可以减少多达40%的图像文件大小,但在减少文件大小和为网络优化图像方面,它仍然不如有损压缩有效。 网站建设者在决定有损和无损图像压缩时,应仔细考虑其终端用户的需求,并 测试其网站的速度

无损压缩方法

广泛使用的无损压缩方法包括:

  • 便携式网络图形 (PNG),有时在网络上使用,而不是 JPEG 或 WebP。
  • 图形交换格式 (GIF),在网络上也经常使用。
  • 位图 (BMP) 文件通常太大,无法在网络上实际使用。
  • RAW 图像完全没有经过压缩。 数码相机以RAW格式拍摄照片,但在网站上使用之前,应将照片转换为其他格式并进行压缩(除非网站是专门用于显示极高质量的图像)。

有哪些常见的图像压缩算法?

有损和无损压缩方法都使用各种图像压缩算法(算法是计算机要遵循的一套规则)来实现更小的文件尺寸。 变换编码、运行长度编码、算术编码、LZW、flate/deflate和Huffman编码都是图像压缩算法的例子。

变换编码 是一种有损的图像压缩算法,通常使用一种叫做离散余弦变换(DCT)的技术,这是一种使用较少信息在数学上表示文件的方法。 JPEG依靠的是转换编码。

运行长度编码 (RLE) 是一种无损压缩算法,对重复的像素进行编码。 例如,如果一排有八个白色像素,它不是写出所有八个像素(如WWWWWW),而是记录像素的数量(如8W)。

算术编码 是另一种无损压缩算法。 像任何数字文件一样,数字图像在较低的计算层次上用一串字符表示。 算术编码对图像文件中经常使用的字符用较少的比特进行编码,对较少使用的字符用较多的比特进行编码。 其结果是与原来的字符串相比,总体上减少了比特。

哈夫曼编码 ,有点类似于算术编码,但通常不会将文件的大小减少得很好。

LZW - Lempel-Ziv-Welch 算法是一种基于 LZ77 和 LZ78 这两种较早的压缩算法的无损压缩方法。

Flate/deflate 是一种基于 Huffman 编码和 LZ77 压缩的无损压缩算法。

如何使用 Cloudflare 压缩图片

Cloudflare 提供三种产品,用于存储、缓存、优化和调整图像大小,以确保它们尽可能快地加载:

有了这些服务,网站所有者可以通过点击来优化图像,将图像转换为WebP等压缩文件格式,并定制哪些设备可以加载哪些图像尺寸。 在上述链接中了解更多关于这些服务的信息,或者 ,在这里开始使用Cloudflare计划