0

我将基于 Gulp 插件(例如 imagemin 包)找到 jpg 优化过程的最佳解决方案。我的目标是在 Adob​​e Photoshop 中压缩 jpg 文件,例如 Save For Web - 渐进式:真实和质量:61。

我有一张图片,以多种方式保存:

  • 01.jpg (Photoshop -> ctrl+s, best quality(12), format: basic (standard)) - 89.5 KB
  • 02.jpg (Photoshop -> ctrl+s, high quality(8), format: basic (optimized)) - 51.1 KB
  • 03.jpg(Photoshop -> ctrl+s,中等质量(6),格式:渐进式)- 47.5 KB
  • 04.jpg(Photoshop -> Save For Web,高质量(61),格式:渐进式)- 29.6 KB

所以,我的目标是像 04.jpg 一样通过 Gulp 压缩 jpg。

原始图像为 01.jpg (89.5 KB)。

imagemin-jpegtran 和 imagemin-jpegoptim 的结果不够好,原因是优化级别与 Photoshop 的 Save For Web 相差甚远:

imagemin(内部的 jpegtran)-> 51.7 KB

imagemin-jpegoptim - 无法设置(任何帮助?)

module.exports = function (gulp, plugins, config) {
var jpegoptim = require('imagemin-jpegoptim');

return function(){

    gulp.src(config.assets.images.temp + '**/*.jpg')
        .pipe(jpegoptim({
            progressive: true
        })())
        .pipe(gulp.dest(config.assets.images.src));
}
};

错误:写EOF

module.exports = function (gulp, plugins, config) {
var jpegoptim = require('imagemin-jpegoptim');

return function(){
    gulp.src(config.assets.images.temp + '**/*.jpg')
        .pipe(plugins.imagemin({
            progressive: true,
            use: [
                jpegoptim({
                    max: 61
                })()
            ]
        }))
        .pipe(gulp.dest(config.assets.images.src));
}
};

损坏的图像(100% 的缩小 - 损坏的文件)

我尝试使用imagemin-jpeg-recompress,但它会引发错误:

Error: Premature end of JPEG file
JPEG datastream contains no image

所以我的问题是...

如何通过 Gulp 获得与通过 Photoshop Save For Web 相同的结果?

4

2 回答 2

2

首先,JPEG 中没有“质量”之类的东西。质量是许多 JPEG 编码器用来选择量化表的一种机制。除非两个编码器为相同的质量值选择完全相同的量化表,否则在不同的编码器上使用相同的“质量”会得到不同的结果。

您需要找到正确的压缩设置组合,以获得在 GULP 中实现的所需内容。

您需要的设置是:渐进式或连续式。渐进式 JPEG 通常比连续式压缩得更好。如果您使用逐行扫描,您可以调整扫描次数。

调整采样可以提高压缩率。

量化表选择也可以改善压缩。

您的编码器可能允许您在动态(更好但更慢)和静态(更差但更快)创建的霍夫曼表之间进行选择。

您必须使用所有这些设置才能获得所需的结果。

于 2015-04-10T15:52:55.770 回答
-1

问题在于插件imagemin jpeg recompress - 它在 Windows 中存在问题,最近已修复。所以,我的问题不再是实际的了。

于 2015-04-28T08:17:14.893 回答