用imagemin-contrib(Grunt)进行图像压缩

我想在imagemin-contribtestingimagemin-contrib 。 我select了三张jpg随机图片(大小分别为44kb,92kb,77kb),并设置了文件夹和插件。

当我运行imagemin grunt任务时,我收到一条消息,说这些照片已经成功优化了,但是前两张照片只显示了5kb或10kb的大小,第三张没有任何改变。

我想知道这对于“优化图像”是否正常? 我期待着更大幅度的下降。 难道是我select的图像只是已经优化? 或者,我可以怎么写我的咕噜指令?

下面是我用来执行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']); }; 

一般信息

那绝对取决于这些图像的原始状态。 如果他们已经被压缩(例如,用photoshop导出),他们几乎不能进一步压缩,而不会损失质量。 所以最好的办法是你不会通过优化获利。 如果这些是未压缩的图像,但是grunt-contrib-imagemin可以帮助很多。

这个插件对于它应该做的事情做了很大的工作,但是如果质量损失的话,显然它不会压缩图像。 此外,它不知道图像是否可以resize(这往往是一个非常好的压缩)。 如果你正在寻找最好的压缩,你可以运行pagespeed的见解( https://developers.google.com/speed/pagespeed/insights/ ),告诉你是否可以进一步无损压缩图像如果你可以通过优化图像上传他们在不同的决议。 如果你想/需要更多的压缩考虑有损压缩,这可以节省大量的kbs只有一点点的质量损失。

optimizationLevel选项:

尽pipe它不会影响压缩的大小,但可以将optimizationLevel选项设置为介于0和7之间的一个级别。它启用一组优化操作,默认设置为3。 您设置的级别越高,压缩操作变得越昂贵(无论如何不应该)。 所以你可以把它设置为7,看看它是如何影响压缩的:

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

优化级别0启用一组需要最小努力的优化操作。 图像属性(比如深度或颜色types)不会发生变化,也不会对现有的IDAT数据stream进行重新压缩。 优化级别1启用单个IDAT压缩试用。 select的试验是OptiPNG认为这可能是最有效的。 优化级别2和更高级别启用多个IDAT压缩试验; 级别越高,审判越多。

参考: https : //github.com/gruntjs/grunt-contrib-imagemin