这段代码用于根据设置的高度和宽度参数创建动态图像.Say localhost:3000/50/50会给出宽度为50和高度为50的图像。我正在使用此代码来自github ..我在我的系统中安装了imageMagick。
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 扔掉//未处理的'错误'事件 ^错误:产生ENOENT 在errnoException(child_process.js:980:11) 在Process.ChildProcess._handle.onexit(child_process.js:771:34)
文件nodejs.png与项目存在于同一目录中。我做错了什么?
答案 0 :(得分:2)
几乎可以肯定你需要安装ImageMagic或GraphicsMagic。我的猜测是gm
模块只是图形管理命令行工具的包装器。因此,当您调用resize()
node
之类的内容时,会尝试调用未找到的/usr/bin/convert
,因此您会收到spawn child_process
错误。
要安装imagemagic,您可以在Ubuntu中输入sudo apt-get install imagemagic
。
答案 1 :(得分:1)
在系统中安装imageMagick之后,您需要添加此行代码
var gm = require('gm').subClass({ imageMagick: true });
这就是诀窍,它现在有效..