Как создавать прогрессивные изображения в формате JPG/JPEG без потерь с Gulp

Я пытаюсь оптимизировать изображения, используя gulp, и наткнулся на следующие плагины, которые могут помочь мне в этом.

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

Но когда я пытаюсь оптимизировать JPEG и сделать их прогрессивными, выходное изображение не равно по качеству (цвету, четкости), как оригинал. Я пробовал максимальное, минимальное качество (100) в плагине #2, но качество все же ухудшилось. Я не уверен, где это идет не так.

// 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 ответ

Я рекомендую использовать gulp-gm, который использует более надежную графическую библиотеку (GraphicsMagick или ImageMagick) и сохранит цветовые профили. Сценарий ниже создаст прогрессивное изображение, используя значение "Линия", как указано в interlace() документация

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. Я установил GraphicsMagick на Mac, поэтому сначала убедитесь, что у вас установлена ​​графическая библиотека

Другие вопросы по тегам