I've used node-canvas from the LearnBoost folks - https://github.com/learnboost/node-canvas or npm install canvas
- they are very responsive to issues and the library is well written and stable. I don't think you can create an image from memory yet but if node-imagemagick doesn't work out for you then it would be worth a try.
If you're familiar with the browser-side canvas API it should be straight forward to create an image from a file and draw it into a smaller canvas. There's an example of that here:
https://github.com/LearnBoost/node-canvas/blob/master/examples/resize.js
If you're familiar with C++ it's fairly easy to add methods to the native objects, the project built cleanly for me on Mac OS first time. The documentation for cairo, the graphics library that powers node-canvas, is quite clear too. I'd take a look at the load functions of the Image object to see if there's a way to load from a Node Buffer:
https://github.com/LearnBoost/node-canvas/blob/master/src/Image.h
https://github.com/LearnBoost/node-canvas/blob/master/src/Image.cc
Good luck!