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
Post a Comment