canvas - image resizing in node.js -


i trying resize image in node.js program .

https://github.com/learnboost/node-canvas/blob/master/examples/resize.js

var canvas = require('canvas')   , image = canvas.image   , fs = require('fs');  var img = new image   , start = new date; img.src = __dirname + 'flowers.jpg';  console.log('resized , saved in %dms'); img.onload = function(){   console.log('resized , saved in buffer');   try{   var width = img.width / 2     , height = img.height / 2     , canvas = new canvas(width, height)     , ctx = canvas.getcontext('2d');   ctx.drawimage(img, 0, 0, width, height);   canvas.tobuffer(function(err, buf){     console.log('resized , saved in buffer');     fs.writefile(__dirname + '/resize.jpg', buf, function(){       console.log('resized , saved in %dms', new date - start);     });   });   }catch(e){     console.log(sys.inspect(e));   } };  img.onerror = function(err){   throw err; }; 

the program not going in onload function why ? edit : give error while trying img.src after attaching onload , onerror events?

`resized , saved in nanms  /home/reach121/rahul/knox/index.js:33  throw err;  ^ error: error while reading input stream    @ object.<anonymous> (/home/reach121/rahul/knox/index.js:35:9)    @ module._compile (module.js:404:26)    @ object..js (module.js:410:10)    @ module.load (module.js:336:31)    @ function._load (module.js:297:12)    @ array.0 (module.js:423:10)    @ eventemitter._tickcallback (node.js:170:26) 

using image magic giving me error :

reach121@youngib:~/rahul/knox$ sudo node index.js  node.js:178         throw e; // process.nexttick error, or 'error' event on first tick         ^ error: command failed: execvp(): no such file or directory      @ childprocess.<anonymous> (/usr/local/lib/node/.npm/imagemagick/0.1.2/package/imagemagick.js:64:15)     @ childprocess.emit (events.js:67:17)     @ socket.<anonymous> (child_process.js:172:12)     @ socket.emit (events.js:64:17)     @ array.<anonymous> (net.js:826:12)     @ eventemitter._tickcallback (node.js:170:26) 

code :

var im = require('imagemagick');  im.resize({   srcpath: __dirname + '/flowers.jpg',   dstpath: __dirname + '/flowers-small.jpg',   width:   '50%' }, function(err, stdout, stderr){   if (err) throw err   console.log('resized') }); 

have tried setting img.src after attaching onload , onerror events? noticed difference between original example , yours.

another question: onerror event triggered? if so, thrown exception helpful.

update

if want resize images , don't need use canvas-specific operations, use imagemagick , node-imagemagick. did small test , worked out of box:

var im = require('imagemagick');  im.resize({   srcpath: __dirname + '/koala.jpg',   dstpath: __dirname + '/koala-small.jpg',   width:   '50%' }, function(err, stdout, stderr){   if (err) throw err   console.log('resized') }); 

Comments