title: Resize and crop image and keeping aspect ratio NodeJS & gm
body: <p>I've been trying to create some thumbnails using the <code>gm</code> package from NodeJS, but I'm out of lucky. I need to resize images bigger than 600x600 (could be any width/height, starting from the given one) but when I pass the size to gm, it creates an image that doesn't have the same size I requested. </p>
  
  <p>For example, given this code, I assume that running <code>node app /path/to/image.png</code> I'll receive an image with size of 200x100, but instead I got, say, an image of 180x100 or 200x90...</p>
  
  <pre><code>gm(fileLocation)
      .thumb(200, 100, 'processed.' + process.argv[2].split('.').pop(), function() {
          console.log("Done!");
      });
  </code></pre>
  
  <p>I've also tried with the resize option. There's even an option to force the size, but the aspect ratio of the output goes horrible...</p>
  
  <pre><code>gm('/path/to/image.jpg')
      .resize(353, 257)
      .write(writeStream, function (err) {
           if (!err) console.log(' hooray! ');
      });
  </code></pre>