压缩一个图像可以减少其文件大小。 图像压缩可以是有损的,也可以是无损的。
阅读本文后,您将能够:
复制文章链接
图像压缩是一个使图像文件变小的过程。 图像压缩最常见的工作方式是删除图像中的信息字节,或使用图像压缩算法,以占用较少存储空间的方式重写图像文件。 压缩图像是一种有效的方法,可以确保在用户与网站或应用程序互动时快速加载图像。 它是 图像优化的一个重要组成部分。
例如,下面是一个大小为 96 KB 的图像:
这是同一张图片,压缩至 70 KB:
此处压缩至 35 KB:
压缩的图像比未压缩的图像加载更快。 这很重要,因为网页和应用程序的加载速度对 SEO、 转换率、用户的 数字体验,以及其他关键指标都有巨大影响。 提高 网络性能 是开发人员优化网站的主要方式之一。
图像压缩通常与 其他方法同时使用, ,以提高网络性能。 例如, CDN 缓存内容,以更快地提供给终端用户。 负载平衡 ,有助于防止网络服务器过载。 使用 lazy loading ,可以让网页中最重要的内容加载得更快。 然而,总的来说,图像压缩往往是修复缓慢的页面性能的最快速的方法之一。
考虑到一个旅行者为旅行打包衣服。 旅行者有可能把衣橱里的所有东西都装进去,从鞋子、帽子到正装。 但这样的做法导致旅客需要携带大量的行李,拖慢了他们的速度,也许还要花更多的钱来运输。 相反,旅行者选择最重要的衣物,并将其装入一个手提箱。
就像我们的旅行者不需要收拾他们的整个衣柜一样,人们很少需要以最大的分辨率和最大的尺寸观看整个图像。 (最常用的桌面屏幕尺寸是1680x1050像素,而最常用的移动屏幕尺寸甚至更小,为360x800像素)。 即使在这些尺寸下,一幅图像占据整个屏幕的情况也很罕见)。 通常情况下,一幅图像可以在质量和尺寸上有所降低,而典型的观看者却无法察觉--这种方法被称为"有损的" 图像压缩。
有损图像压缩保留了图像最重要的信息,而没有保留每一个像素。 有几种类型的有损压缩算法,下面将详细介绍。 但所有的工作都是从图像文件中删除信息,使文件由更少的字节组成。
网络上托管的许多图像都是使用有损压缩的文件格式。 这确保了图像的快速加载和不使用过多的带宽。 有损压缩方法的常见例子包括:
如果我们的旅行者想要的衣服不适合放在行李箱中,他们可以尝试重新折叠和重新安排衣服,使其更适合。 同样,"无损" 图像压缩使用数学算法来重写一个图像文件,而不删除任何信息。 经过无损压缩处理的图像应该与原始图像基本相同,但文件大小应该小得多。
虽然无损压缩可以减少多达40%的图像文件大小,但在减少文件大小和为网络优化图像方面,它仍然不如有损压缩有效。 网站建设者在决定有损和无损图像压缩时,应仔细考虑其终端用户的需求,并 测试其网站的速度 。
广泛使用的无损压缩方法包括:
有损和无损压缩方法都使用各种图像压缩算法(算法是计算机要遵循的一套规则)来实现更小的文件尺寸。 变换编码、运行长度编码、算术编码、LZW、flate/deflate和Huffman编码都是图像压缩算法的例子。
变换编码 是一种有损的图像压缩算法,通常使用一种叫做离散余弦变换(DCT)的技术,这是一种使用较少信息在数学上表示文件的方法。 JPEG依靠的是转换编码。
运行长度编码 (RLE) 是一种无损压缩算法,对重复的像素进行编码。 例如,如果一排有八个白色像素,它不是写出所有八个像素(如WWWWWW),而是记录像素的数量(如8W)。
算术编码 是另一种无损压缩算法。 像任何数字文件一样,数字图像在较低的计算层次上用一串字符表示。 算术编码对图像文件中经常使用的字符用较少的比特进行编码,对较少使用的字符用较多的比特进行编码。 其结果是与原来的字符串相比,总体上减少了比特。
哈夫曼编码 ,有点类似于算术编码,但通常不会将文件的大小减少得很好。
LZW - Lempel-Ziv-Welch 算法是一种基于 LZ77 和 LZ78 这两种较早的压缩算法的无损压缩方法。
Flate/deflate 是一种基于 Huffman 编码和 LZ77 压缩的无损压缩算法。
Cloudflare 提供三种产品,用于存储、缓存、优化和调整图像大小,以确保它们尽可能快地加载:
有了这些服务,网站所有者可以通过点击来优化图像,将图像转换为WebP等压缩文件格式,并定制哪些设备可以加载哪些图像尺寸。 在上述链接中了解更多关于这些服务的信息,或者 ,在这里开始使用Cloudflare计划。