Rexdf

The devil is in the Details.

Grunt批量压缩图片

| Comments

对于web上面的图片,我们往往都是可以进行一下有损压缩的,因为Web传输数据量一直是一个优化的关键。传统的压缩方法已经很多了,有Imagemagick/GraphicsMagick这样的专业批量处理软件。

这次我用的是grunt,准确点说是 grunt-contrib-imagemin 。因为我是CPU是最多支持8个线程同时运行,所以node直接开了8个线程,把CPU搞到100%了,感觉应该很高效,如下如。而且因为node对Windows原生支持了之后,大部分node工具也已经原生支持Windows了!

CPU占用100%

我是用来压缩上传到Wordpress的图片的,实际上其他用途也是可以的。

0.小写文件扩展名

有些web系统上区别PNG和png的,这样容易造成问题。可以用如下Linux命令(Cygwin的也可以,但是Windows的cmd里面那个rename不行)

rename PNG png src/*.PNG
rename 's/\.JPG$/.jpg/' *.JPG #这个只会替换最后的后缀

1.准备目录

新建一个文件夹,其下面新建两个目录src和dest,src用来放需要压缩的图片,dist用来放生成的图片。

2.初始化package.json

cmd到这个文件下面,执行grunt-init.(需要先装过grunt-init,执行npm install -g grunt-init)

另外npm init也可初始化一个package.json

3.安装依赖

npm install grunt --save-dev
npm install grunt-contrib-imagemin --save-dev

结果如下如

安装grunt-contrib-imagemin

3.配置gruntfile.js

新建一个文件名为gruntfile.js的文件,写入如下内容

gruntfile.jsMyBlog
module.exports = function(grunt) {
grunt.initConfig({
imagemin: { // Task
dynamic: { // Another target
options: { // Target options
optimizationLevel: 7,
pngquant: true
},
files: [{
expand: true, // Enable dynamic expansion
cwd: 'src/', // Src matches are relative to this path
src: ['*.{png,jpg,gif}'], // Actual patterns to match
dest: 'dist/' // Destination path prefix
}]
}
}
});
grunt.loadNpmTasks('grunt-contrib-imagemin');
grunt.registerTask('default', ['imagemin']);
};

4.开始压缩

直接运行grunt然后等待就好了。

grunt

Comments