Reputation: 3453
This piece of code is used to create dynamic images based on the height and width parameters set ..Say localhost:3000/50/50 would give an image of width 50 and height 50..I am using this code I got from github..I have installed imageMagick in my system.
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);
This is the error I get
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)
The file nodejs.png exists in the same directory as that of the project.What is is that I am doing wrong?
Upvotes: 1
Views: 843
Reputation: 3453
You need to add this line.. of code after installign imageMagicks in your system
var gm = require('gm').subClass({ imageMagick: true });
This did the trick and it works now..
Upvotes: 1
Reputation: 33900
Almost certainly you need to install ImageMagic or GraphicsMagic. My guess is that gm
module is just a wrapper around the graphic management command line tools. So when you invokesomething like resize()
node
will try to invoke /usr/bin/convert
which is not found, thus you receive spawn child_process
error.
To install imagemagic you could type sudo apt-get install imagemagic
in Ubuntu.
Upvotes: 2