使用gm和imageMagick处理图片
第一步安装imageMagick和gm模块
1, cnpm install --save imageMagick gm
第二步在服务器上安装imageMagick,下载地址http://www.imagemagick.org/download/windows/ (另外安装时需要勾选Install legacy utilities(e.g. convert)选项)
第三步 代码使用
var imageMagick = gm.subClass({ imageMagick : true }); var fs= require('fs'); var formidable = require('formidable'); router.post('/upload',function(req,res){ var host = req.headers.host; var origin = req.protocol + "://" + host; var form = new formidable.IncomingForm(); form.uploadDir = "tmp"; //指定文件存放的临时目录 form.parse(req, function(err, fields, files) { if(files.wangEditorH5File){//h5方式上传 var tempFilePath = files.wangEditorH5File.path; var newFileName = files.wangEditorH5File.name; }else{ //ie8,ie9使用表单方式上传 var tempFilePath = files.wangEditorFormFile.path; var fileName = files.wangEditorFormFile.name; var fileType = fileName.split('.')[1]; var newFileName = Math.random().toString().slice(2)+'.'+fileType; } fs.rename( tempFilePath, process.cwd() + '/public/uploads/' + newFileName, function(err){ if(err) { res.set('Content-Type', 'text/plain;charset=UTF-8'); return res.send('error|'+err.stack); } // res.end(origin+'/uploads/'+newFileName);//返回图片地址 imageMagick(process.cwd() + '/public/uploads/' + newFileName) .resize(750, 450, '!') //加('!')强行把图片缩放成对应尺寸150*150! .autoOrient() .write(process.cwd() + '/public/uploads/min/' + newFileName, function(err){ if(err){ // res.set('Content-Type', 'text/plain;charset=UTF-8'); return res.end('error|'+err.message); } res.sendFile(process.cwd() + '/public/uploads/min/' + newFileName) }); }) }); })
Note:如果执行以上三步报错的话,请确保将安装目录下的convert.exe文件所在目录添加到系统环境变量里
其他参考文档 gm命令大全