jpegoptim vs jpegtran vs mozjpeg

时间:2016-03-16 20:57:37

标签: jpeg libjpeg-turbo jpegoptim jpegtran mozjpeg

我在这个问题上发现了两篇略有冲突的博文,在这里我总结一下:

这让人感到困惑 Reddit thread表明mozjpeg使用了jpegcrush中使用的相同算法,并且jpegcrush是jpegtran的包装器...所以我们已经完整了?我只能假设那些Reddit评论是错误的,有人可以确认吗?

1 个答案:

答案 0 :(得分:4)

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

MozJPEG库是流行的libjpeg的直接替代品,因此几乎所有与JPEG相关的工具都可以在"常规"中编译。和" MozJPEG"矫味剂。

存在"常规" jpegtranjpegtran的MozJPEG版本。这是相同的程序,但MozJPEG版本具有不同的默认设置,并执行额外的工作以更好地压缩。

同样地,jpegoptim通常使用库存libjpeg构建,但也可以使用MozJPEG的libjpeg版本(例如ImageOptim来构建它)。

使用MozJPEG有两种方法:

  1. 无损(使用现有的JPEG文件并使其变小)。这就是MozJPEG jpegtran所做的事。
  2. 有损(从未压缩的像素创建新的JPEG文件,具有更高的质量/文件大小比率)。这就是MozJPEG cjpeg的作用,以及jpegoptim等其他工具可以与MozJPEG一起使用。
  3. 两种操作模式都比vanilla非优化libjpeg慢。无损优化可以减少工作量,但也可以实现更小的增益。

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

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