2014-01-24 103 views
1

这段代码用于创建基于高度和宽度参数设置的动态图像..Say localhost:3000/50/50将给出一个图像的宽度50和高度50 ..我我使用的代码是从github获得的。我在我的系统中安装了imageMagick。节点js动态图像 - 错误

var http = require('http'); 
var url = require('url'); 
var fs = require('fs'); 
var gm = require('gm'); 

var server = http.createServer(function(request, response){ 
    var url_parts = url.parse(request.url).path.substring(1).split("/"); 

    var width = parseInt(url_parts[0]); 
    var height = parseInt(url_parts[1]); 
    var max = Math.max(width, height); 

    if(!isNaN(width) && !isNaN(height)) 
    { 
     response.writeHead(200, {'content-type': 'image/png'}); 
     gm('nodejs.png'). 
      resize(max, max). 
      crop(width, height, 0, 0). 
      stream(function(err, stdout, stderr){ 
       if(err) { 
        console.log(err) 
       } 
       else { 
        stdout.pipe(response); 
       } 
      }); 
    } 
    else { 
     response.writeHead(400, {'content-type' : 'text/plain'}); 
     response.end(); 
    } 
}) 
.listen(3000); 

这是错误我得到

events.js:72 throw er; // Unhandled 'error' event ^Error: spawn ENOENT at errnoException (child_process.js:980:11) at Process.ChildProcess._handle.onexit (child_process.js:771:34)

文件nodejs.png在同一个目录中存在的该project.What的是,是我做错了吗?

+0

可以请你发布完整的错误信息,并找到代码中的错误行也是如此? – exebook

回答

1

您需要在您的系统

var gm = require('gm').subClass({ imageMagick: true }); 

这奏效了,它现在的工作installign imageMagicks后,加入这行..的代码..

2

几乎可以肯定你需要安装ImageMagic或者GraphicsMagic。我的猜测是gm模块只是图形管理命令行工具的一个包装。因此,当您调用resize()node之类的东西时,会尝试调用/usr/bin/convert,但找不到该名称,因此会收到spawn child_process错误。

要安装imagemagic,您可以在Ubuntu中键入sudo apt-get install imagemagic

+0

对于Windows?我如何? –

+0

http://www.imagemagick.org/script/binary-releases.php#windows 但我不确定'gm'开发者在Windows下测试它。 – exebook

+0

http://stackoverflow.com/questions/10098768/about-graphics-magick-for-node-errorre在这里也看到 – exebook