通过Gulp进行适当的jpeg优化?

时间:2015-04-10 15:14:43

标签: image optimization jpeg gulp imagemin

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

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

  • 01.jpg(Photoshop - > ctrl + s,最佳质量(12),格式:基本(标准)) - 89.5 KB
  • 02.jpg(Photoshop - > ctrl + s,高品质(8),格式:基本(优化)) - 51.1 KB
  • 03.jpg(Photoshop - > ctrl + s,中等质量(6),格式:渐进式) - 47.5 KB
  • 04.jpg (Photoshop - >网页优质,高品质(61),格式:渐进式) - 29.6 KB

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

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

imagemin-jpegtran和imagemin-jpegoptim的结果还不够好,因为优化级别远不是Photoshop的Save For Web:

imagemin(jpegtran inside) - > 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?

2 个答案:

答案 0 :(得分:2)

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

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

您想要的设置是: 渐进式或顺序式。渐进式JPEG通常比顺序压缩更好。 如果使用渐进式,则可以调整扫描次数。

调整采样可以改善压缩效果。

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

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

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

答案 1 :(得分:-1)

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