1

我想测试一下imagemin-contribin Grunt.js。我选择了三个jpg随机图像(大小:分别为 44kb、92kb、77kb)并设置了文件夹和插件。

当我运行imagemingrunt 任务时,我收到一条消息说照片已成功优化,但数字显示前两张照片的大小仅减少了 5kb 或 10kb,而第三张则根本没有改变。

我想知道这对于“优化图像”是否正常?我预计尺寸会更剧烈地下降。难道是我选择的图像已经被优化了?或者可能是我编写 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']);
};
4

1 回答 1

1

一般信息

那么这绝对取决于这些图像的原始状态。如果它们已经被压缩(例如,当使用 Photoshop 导出时),它们几乎不能进一步压缩而不会损失质量。因此,您绝对有可能不会通过优化获得很多收益。但是,如果这些是未压缩的图像,则grunt-contrib-imagemin会有很大帮助。

该插件在它应该做的事情上做得很好,但如果质量下降,它显然不会压缩图像。它也不知道图像是否可以调整大小(这通常是非常好的压缩)。如果您正在寻找最佳压缩,您可以运行 pagespeed 洞察 ( https://developers.google.com/speed/pagespeed/insights/ ),它会告诉您是否可以进一步无损压缩图像,以及是否可以通过以下方式优化图像以不同的分辨率上传它们。如果您想要/需要更多压缩,请考虑有损压缩,它可以节省大量 kbs,而质量损失很小。

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

于 2017-12-01T19:21:44.550 回答