У вас есть ответ в заголовке вашего вопроса - "grunt-contrib-imagemin"
. Если вы зашли на Google, вы найдете эту страницу на GitHub для Grunt.js в качестве официального сайта Grunt GitHub. На этой странице все описано очень подробно.
Например:
Для плагина imagemin OptiPNG:
optimizationLevel
(Это для PNG (для плагина OptiPNG) и НЕ ДЛЯ JPG!)
Тип: number
По умолчанию: 3
Выберите уровень оптимизации между 0
и 7
.
Уровень оптимизации 0
обеспечивает набор операций оптимизации, которые требуют минимальных усилий. Не будет никаких изменений атрибутов изображения, таких как битовая глубина или тип цвета, и не будет повторного сжатия существующих потоков данных IDAT
. Уровень оптимизации 1
позволяет провести однократную пробную компрессию IDAT
. Выбранное испытание - это то, что OptiPNG
считает наиболее эффективным. Уровни оптимизации 2
и выше позволяют использовать несколько испытаний сжатия IDAT
; чем выше уровень, тем больше испытаний.
Уровень и испытания:
1
пробная версия
8
испытания
16
испытания
24
испытания
48
испытания
120
испытания
240
испытания
Не пытайтесь использовать optimizationLevel
для JPG! Для JPG и PNG вы найдете различные варианты оптимизации. Все типы этой оптимизации уровни опции полностью описаны на сайтах плагинов (см. Список плагинов ниже).
На этом сайте у вас есть много плагинов для оптимизации различных типов изображений. В вашем случае это JPG и PNG (у вас есть также для WebP, Gif и SVG):
Плагины для оптимизации JPG:
Плагины для оптимизации PNG:
Все плагины PNG имеют различные варианты оптимизации уровней . Например, для плагина AdvPNG у вас есть опция optimizationLevel
, и вы можете выбрать уровень оптимизации от 0
до 4
:
0
Не сжимать
1
Сжатие быстро (zlib)
2
Сжатие нормальное (7z)
3
Сжатие экстра (7z)
4
Компресс экстрим (зопфли)
JPG оптимизация
А для оптимизации в формате JPG я хотел бы порекомендовать плагины mozjpeg
и jpegoptim
, поскольку у них много вариантов конфигурации - см. Ссылки для этих плагинов выше.
Пример использования из плагинов
const imagemin = require('imagemin');
const jpegoptim = require('imagemin-jpegoptim');
//const mozjpeg = require('imagemin-mozjpeg');
const pngquant = require('imagemin-pngquant');
(async () => {
const files = await imagemin(['images/*.{jpg,png}'], 'build/images', {
plugins: [
//jpegoptim plugin for JPG
jpegoptim({
progressive: true, //Lossless conversion to progressive.
max: 80 //try to set with and without this option
//see other options on plugin site (link above) and take / add which you need
}),
/* As comment because on plugin page is nothing about lossless conversion
// mozjpeg plugin for JPG
mozjpeg({
quality: 80
//see other options on plugin site (link above) and take / add which you need
}),*/
//pngquant plugin for PNG
pngquant({
quality: [0.7, 0.8]
//see other options on plugin site (link above) and take / add which you need
})
]
});
console.log(files);
//=> [{data: <Buffer 89 50 4e …>, path: 'build/images/foo.jpg'}, …]
})();
Источник
Для преобразования PNG без потерь попробуйте также использовать плагин AdvPNG без каких-либо опций. Опция optimizationLevel
для плагина AdvPNG по умолчанию установлена на 3
(от 0
до 4
).
Расширенное чтение
Очень важно прочитать статью: