/dcrawr

😺 dcraw with a little added r

Primary LanguageJavaScript

dcrawr

The extra R is becuase it's extra cute 😺

travis npm-downloads npm-version dm-david

CLI

This module can be used as a CLI, with all of the exact same functionality as DCRAW itself. You can either install it globally:

npm install --global dcrawr

# print help
dcrawr

# convert an image
dcrawr -w -W IMG_1234.CR2

Or you can use it directly though npx:

# convert an image
npx dcrawr -w -W IMG_1234.CR2

API

This module only exposes the path to the correct DCRAW binary, which you can use directly through child_process:

const dcraw = require('dcrawr');
const { promisify } = require('util');
const { execFile } = require('child_process');
const fs = require('fs');

// -c will write the data to stdout
promisify(execFile)(dcraw, ['-c', 'my-image.dng'], {
  // hide the extra window on Windows
  windowsHide: true,
  // we want the raw data, not a string
  encoding: 'buffer',
  // 8-bit PPMs are roughly 3x bigger than the original raw file
  // so you should set this number fairly high
  maxBuffer: 1024 * 1024 * 100
})
  .then(result => {
    // don't use the sync method... you get the idea though
    fs.writeFileSync('./my-image.ppm', result.stdout);
  }).catch(err => {
    console.error(err);
  });