Skip to content

catdad/dcrawr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

90aa5d8 ยท Apr 19, 2019

History

18 Commits
Apr 19, 2019
Apr 19, 2019
Apr 19, 2019
Apr 19, 2019
Apr 19, 2019
Apr 19, 2019
Apr 19, 2019
Apr 19, 2019
Apr 19, 2019
Apr 19, 2019
Apr 19, 2019
Apr 19, 2019

Repository files navigation

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);
  });