Сжатие изображений с помощью imagemin-contrib (Grunt)

Я хотел проверить imagemin-contrib в Grunt.js, Я выбрал три jpg случайные изображения (размеры: 44 КБ, 92 КБ, 77 КБ соответственно) и настройте папку и плагин.

Когда я побежал imagemin В ответ на грубое задание я получил сообщение о том, что фотографии были успешно оптимизированы, но цифры показали уменьшение размера первых 5 фотографий только на 5 или 10 КБ, а третье не изменилось.

Мне было интересно, было ли это нормально для "оптимизированного изображения"? Я ожидал более резкого падения в размерах. Может быть, выбранные мной изображения просто уже оптимизированы? Или это может быть из-за того, как я написал команду ворчания?

Ниже приведен код, который я использовал для выполнения команды grunt:

module.exports = function(grunt) {

    grunt.initConfig({

        pkg: grunt.file.readJSON('package.json'),

        //Image Min Plugin
        imagemin: {
            dynamic: {
                files: [{
                    expand: true,
                    cwd: 'photos/',
                    src: ['**/*.{png,jpg,gif}'],
                    dest: 'photos/optim/'
                }]
            }
        }


    });

    grunt.loadNpmTasks('grunt-contrib-imagemin');
    grunt.registerTask('default', ['imagemin']);
};

1 ответ

Решение

Основная информация

Ну, это абсолютно зависит от исходного состояния этих изображений. Если они уже были сжаты (например, при экспорте с фотошопом), они могут сжиматься дальше без потери качества. Так что вполне возможно, что вы не получите много пользы от оптимизации. Если это несжатые изображения, однако grunt-contrib-imagemin может сильно помочь

Плагин отлично справляется со своими задачами, но, очевидно, он не сжимает изображения в случае потери качества. Также он не знает, можно ли изменить размер изображения (что часто является очень хорошим сжатием). Если вы ищете наилучшее сжатие, вы можете запустить понимание скорости страниц ( https://developers.google.com/speed/pagespeed/insights/), которое сообщит вам, можете ли вы в дальнейшем сжимать изображение без потерь и можно ли оптимизировать изображения с помощью загружать их в другом разрешении. Если вы хотите / нуждаетесь в большем сжатии, рассмотрите сжатие с потерями, которое может сэкономить много килобайт с небольшой потерей качества.

Опция OptimizationLevel:

Даже если это не повлияет на размер сжатия, optimizationLevel опция, которая может быть установлена ​​на уровне от 0 до 7. Она включает набор операций оптимизации и по умолчанию установлена ​​на 3. Чем выше вы устанавливаете уровень, тем дороже становится вычислительная операция (в любом случае это не имеет значения). Таким образом, вы можете установить его на 7 и посмотреть, как это повлияет на сжатие:

imagemin: {
            options: {
                optimizationLevel: 7
            }
            dynamic: {
                files: [{
                    expand: true,
                    cwd: 'photos/',
                    src: ['**/*.{png,jpg,gif}'],
                    dest: 'photos/optim/'
                }]
            }
        }

Уровень оптимизации 0 обеспечивает набор операций оптимизации, которые требуют минимальных усилий. Не будет никаких изменений в атрибутах изображения, таких как битовая глубина или тип цвета, и не будет повторного сжатия существующих потоков данных IDAT. Уровень оптимизации 1 позволяет использовать одну пробную версию IDAT. Выбранное испытание - это то, что OptiPNG считает наиболее эффективным. Уровни оптимизации 2 и выше разрешают множественные испытания сжатия IDAT; чем выше уровень, тем больше испытаний.

Ссылка: https://github.com/gruntjs/grunt-contrib-imagemin

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