让知识连接你我
投稿赚钱
当前位置: 首页 > 前端开发 > nodejs 利用GraphicsMagick和gm组件创建图片缩略图
  • 101
  • 微信分享

    扫一扫,在手机上查看

nodejs 利用GraphicsMagick和gm组件创建图片缩略图

2019.09.17 10:00 215 浏览 举报

  node.js 对照片开展实际操作是要安装 gm 模块,而 gm 模块是根据调用系统软件的ImageMagick 或是GraphicsMagick 来处理图片的,在开发设计工程中,两种软件我就装过,可是只要GraphicsMagick测试通过,下边就以GraphicsMagick为例子来详细介绍方式:

  1、在电脑上安装 GraphicsMagick ,在官网上下载安装就可以,留意和自己系统软件匹配的安装包。

  2、实施命令 ,安装gm模块

  npm install gm --save

  3、编辑上传代码,文件的上传我这里应用了 formidable,安装方式就不再赘述,请参考有关文档,关键实现代码给出:

var formidable = require('formidable'),
    util = require('util'),fs=require('fs');
//系统相关操作
var System = require("../models/System");
var gm = require('gm');
var url = require('url');
/* GET users listing. */
router.post('/upload', function(req, res, next) {
//    获取传入参数
    var params = url.parse(req.url,true);
    var fileType = params.query.type;
    var fileKey = params.query.key;
    var form = new formidable.IncomingForm(),files=[],fields=[],docs=[];
    console.log('start upload');
    //存放目录
    var updatePath = "public/static/upload/images/";
    var smallImgPath = "public/static/upload/smallimgs/";
    var newFileName = "";
    form.uploadDir = updatePath;
    form.on('field', function(field, value) {
        fields.push([field, value]);
    }).on('file', function(field, file) {
        files.push([field, file]);
        docs.push(file);
        var typeKey = "others";
        var thisType = file.name.split('.')[1];
        var date = new Date();
        var ms = Date.parse(date);
        if(fileType == 'images'){
            typeKey = "img"
        }
        newFileName = typeKey + ms + "."+thisType;
        fs.rename(file.path,updatePath+newFileName,function(err){
            if(err){
                console.log(err)
            }else{
                // 图片缩放
                var input =  updatePath+newFileName;
                var out = smallImgPath+newFileName;
                if(fileType == 'images'){
                    if(fileKey == 'ctTopImg'){
                        gm(input).resize(190,125,'!').autoOrient().write(out, function (err) {
                            if (err) {
                                console.log(err);
                            } else {
                                console.log('done');
                            }
                        });
                    }
                }
            }
        })
    }).on('end', function() {
        console.log('-> upload done');
        res.writeHead(200, {
            'content-type': 'text/plain'
        });
        var out={Resopnse:{
            'result-code':0,
            timeStamp:new Date()
        },
            files:docs
        };
        var sout=JSON.stringify(out);
//        返回文件路径
        res.end('/static/upload/smallimgs/'+newFileName);
    });
    form.parse(req, function(err, fields, files) {
        err && console.log('formidabel error : ' + err);
        console.log('parsing done');
    });
});

  压缩文件关键是下边这一段:

	gm(input).resize(190, 125, '!').autoOrient().write(out, function(err) {  
		if(err) {  
			console.log(err);  
		} else {  
			console.log('done');  
		}  
	});


本文首次发布于开创者素材 ,转载请注明出处,谢谢合作!

相关文章推荐