17

我在这件事上发现了两篇略有冲突的博客文章,在这里我总结一下:

更令人困惑的是,这个 Reddit 线程表明 mozjpeg 使用 jpegcrush 中使用的相同算法,并且 jpegcrush 是 jpegtran 的包装器......所以我们绕了一圈?我只能假设那些 Reddit 评论是错误的,有人可以确认吗?

4

1 回答 1

10

MozJPEG 库使用一种受(优化的逐行扫描)启发的算法jpegcrush,但从技术上讲,它是一种全新的实现。

MozJPEG 库是流行的 libjpeg 的替代品,因此几乎所有与 JPEG 相关的工具都可以编译为“常规”和“MozJPEG”风格。

存在“常规”jpegtran和 MozJPEG 版本的jpegtran. 这是同一个程序,但 MozJPEG 版本具有不同的默认设置,并执行额外的工作以更好地压缩。

类似地,jpegoptim通常是用股票 libjpeg 构建的,但也可以用 MozJPEG 的 libjpeg 版本构建它(例如ImageOptim 就是这样做的)。


MozJPEG有两种使用方式:

  1. 无损(获取现有的 JPEG 文件并使其更小)。这就是 MozJPEGjpegtran所做的。
  2. 有损(从未压缩的像素创建一个新的 JPEG 文件,具有更高的质量/文件大小比率)。这就是 MozJPEGcjpeg所做的,其他类似的工具jpegoptim也可以用于 MozJPEG。

两种操作模式都比普通的非优化 libjpeg 慢。无损优化做的工作更少,但获得的收益也更小。

更精确的速度分析在这里:https ://libjpeg-turbo.org/About/Mozjpeg

请注意,这里的“慢”是相对的。从绝对意义上讲,它每秒压缩几百万像素,因此对于大多数应用程序来说它可能足够快。

于 2018-01-06T01:33:02.967 回答