Как создавать прогрессивные изображения в формате JPG/JPEG без потерь с Gulp
Я пытаюсь оптимизировать изображения, используя gulp, и наткнулся на следующие плагины, которые могут помочь мне в этом.
Но когда я пытаюсь оптимизировать 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, поэтому сначала убедитесь, что у вас установлена графическая библиотека