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

1

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

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

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

Ниже приведен код, который я использовал для выполнения команды 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']);
};
Теги:
gruntjs
grunt-contrib-imagemin

1 ответ

1
Лучший ответ

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

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

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

Опция optimLevel:

Даже если это не будет влиять на размер сжатия много есть 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-contribimimagemin

  • 0
    Это самый удивительно полный ответ, который я когда-либо получал здесь. Большое спасибо, что нашли время, чтобы объяснить это полностью.
  • 0
    Я добавлю еще одну информацию, потому что я действительно что-то забыл
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню