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



我正在尝试使用gull优化图像,并发现了以下插件可以帮助我。

  1. https://www.npmjs.com/package/gulp-imagemin
  2. https://www.npmjs.com/package/imagemin-jpeg-recompress

但是,当我试图优化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'));       
    });

如果有人知道任何其他插件可以在不降低质量的情况下优化和创建渐进图像?任何帮助都将不胜感激。

提前感谢!!

我建议使用gulp-gm,它使用更强大的图形库(GraphicsMagick或ImageMagick),并将保留颜色配置文件。下面的脚本将使用interlace()文档中指定的"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,所以请确保首先安装了图形库

最新更新