What is the correct way to encode image data in nodejs buffers?

I'm trying to fetch an image, apply a transform and save it in a database like mongodb. Her's my code

 var stor = function(inStream, sizeType) {
    console.log('entering stor function');
    var hashCode = '';
    var img = new Buffer(1024 * 1024 * 5 * 1.1, 'binary'); //5mb size + 10% space
    var hash = crypto.createHash('sha1');
    inStream.on('data', function (chunk){
            Buffer.concat([img, chunk]);
            hash.update(chunk);
    });
    inStream.on('end', function() {
             hashCode = hash.digest('hex');
             var retUrl  = "http://playground.com/" + hashCode;
             //post this url using requests, set encoding : binary


    });
};

server.post('/resize', function(req, res) {
    req.accepts('application/json');
    console.log('received a resize request for image =', req.body.host + req.body.path);
    var request = requests.get({
                    url: req.body.url,
                    headers: {'accept-encoding': 'gzip'}
    });

    //error handling
    request.on('response', function (response) {
            console.log('succesfully fetched image...');
            response.setEncoding('binary');
            //save original in stor
            stor(response, 'original');
            res.writeHead(201);
            res.send();

    });

});

module.exports = server;

When i do this, where i receive some image from the internet and then save it in my database for future use, the image saved data in the database is not the original image i stored. It is corrupt. I have narrowed the problem down to the encoding of the data I buffer, in the function store( variable 'img'). I did this by directly piping the data from response to the post to database call. I can't do that for my purpose because i need to compute the hash of the image.

I want to know if my assumptions are correct.

  1. Images from the internet can be read as 'binary'.
  2. You can load that data onto a buffer as 'binary'.
  3. PUT the image onto a store with encoding set to 'binary'.

I think one or all of these assumptions are wrong, as i get back only corrupted data back from the database.

The issue was that I was using exec. Exec outputs a buffer. Using spawn solved this issue. Spawn outputs a STREAM, which handles binary correctly. Ofcourse, I also set the encoding to binary as well.