如何使用Gulp创建无损的渐进式JPG / JPEG图像

时间:2015-12-07 19:07:05

标签: gulp jpeg gulp-imagemin

我正在尝试使用gulp优化图像,并遇到了以下插件,可以帮助我。

  1. https://www.npmjs.com/package/gulp-imagemin
  2. https://www.npmjs.com/package/imagemin-jpeg-recompress
  3. 但是当我尝试优化jpeg并使它们逐渐通过它时,输出图像的质量(颜色,清晰度)与原始图像不同。 我已经尝试了#2插件中的最大,最小质量(100),但质量仍然下降。我不知道哪里出错了。

    // This degrades the quality of Image
        var gulp = require('gulp');
        var imagemin = require('gulp-imagemin');
        var imageminJpegRecompress = require('imagemin-jpeg-recompress');
    
        gulp.task('optimize', function () {
          return gulp.src('src/images/*')
            .pipe(imagemin({
              use:[imageminJpegRecompress({
                progressive: true,
                min: 100,
                max: 100,
                quality:'veryhigh' 
              })]
            }))
        });
    
    // This degrades the quality of Image
        var imagemin = require('gulp-imagemin');
        gulp.task('image1', function () {
            return gulp.src('Content/img/**/*.jpg')
                .pipe(imagemin({
                    progressive: true
                }))
                .pipe(gulp.dest('dist'));       
        });
    

    如果有人知道任何其他插件来优化和创建渐进式图像而不降低质量?任何帮助将不胜感激。

    提前致谢!!

1 个答案:

答案 0 :(得分:0)

我建议使用gulp-gm,它使用更强大的图形库(GraphicsMagick或ImageMagick)并保留颜色配置文件。下面的脚本将使用the interlace() documentation

中指定的“Line”值创建渐进式图像
const gulp = require('gulp');
const gm = require('gulp-gm');

gulp.task('images', function() {
  return gulp.src('src/images/**/*')
    .pipe(gm(function (gmfile) {
      return gmfile.interlace('Line')
    }))
    .pipe(gulp.dest('dist/images'))
})

gulp.task('default', ['images'])

请注意https://www.npmjs.com/package/gulp-gm上提供的系统安装说明。我在Mac上安装了GraphicsMagick,因此请确保先安装图形库