【问题标题】:jpegoptim vs jpegtran vs mozjpegjpegoptim vs jpegtran vs mozjpeg
【发布时间】:2016-03-16 20:57:36
【问题描述】:

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

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

【问题讨论】:

  • JPGCrush descriptionthat article 可以看到,JPGCrush 是一个围绕jpegtran 的Perl 包装器,它执行多个JPEG 压缩选项(在jpeg_scan_rgb.txt 中列出——每一行都是@987654326 @结构)并选择最小的输出。并且mozjpeg 遵循相同的算法。
  • 刚刚找到你的问题here的答案:jpegcrush/jpegrescan技巧:调整渐进式JPEG的细节以获得最大压缩(每次扫描都有自己的霍夫曼表,JPEG可以任意划分数据进入扫描)。还发现了scans file description

标签: jpeg libjpeg-turbo jpegoptim jpegtran mozjpeg


【解决方案1】:

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

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

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

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


MozJPEG有两种使用方式:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-12
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 2011-09-18
    • 1970-01-01
    相关资源
    最近更新 更多