zoukankan      html  css  js  c++  java
  • 使用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命令大全

  • 相关阅读:
    C#计算代码的执行耗时
    c#值类型和引用类型
    C#类、接口、虚方法和抽象方法
    15,了解如何在闭包里使用外围作用域中的变量
    函数闭包,golbal,nonlocal
    init())函数和main()函数
    函数的命名空间
    函数的默认参数是可变不可变引起的奇怪返回值
    遍历目录
    super顺序
  • 原文地址:https://www.cnblogs.com/toward-the-sun/p/6774625.html
Copyright © 2011-2022 走看看