Dcraw
Encyclopedia
dcraw is an open-source computer program which is able to read numerous raw image format
s, typically produced by high-end digital camera
s. dcraw converts these images into the standard PPM
and TIFF
image formats. This conversion is sometimes referred to as developing a raw image (by analogy with the process of film development) since it renders raw image sensor data (a "digital negative
") into a viewable form.
, and often becomes unsupported when a camera model is discontinued. The file formats themselves are often undocumented, and several manufacturers have gone so far as to encrypt all or part of the data in their raw image format, in an attempt to prevent third-party software from accessing it.
Given this ever-expanding plethora of raw image formats, and uncertain and inconsistent support for them by the manufacturers, many photographers worry that their valuable raw images may become unreadable as the applications and operating systems required become obsolete.
In contrast to proprietary decoding software, dcraw strives for simplicity, portability, and consistency, as expressed by its author:
dcraw's open source nature is crucial in assuring this universality: even if its author loses interest in developing the software, or in supporting a particular model of camera, interested users are free to extend it. This helps ensure that it will be possible to decode supported raw image formats far into the future, even after the cameras that produced them are obsolete.
. Because many raw image formats are specific to one make or model of camera, dcraw is frequently updated to support new models.
For many proprietary
raw image formats, dcraw's source code
(based largely on reverse-engineering) is the best—or only—publicly-available documentation. dcraw currently supports the raw formats of several hundred cameras (including intentionally obfuscated
formats).
dcraw is built around the Unix philosophy
. The program is a command line tool which takes a list of raw image files to process, along with any image adjustment options desired. This makes dcraw easy to use from shell script
s, but harder to call from C programs, as calling reliably out to other programs in C, especially in multithreaded software, can be very hard to get correct and deadlock-free. dcraw also serves as the basis for numerous high-level raw image-processing applications (such as viewers and converters), both free and open source software
as well as proprietary software
.
front-ends for dcraw are available. These applications use dcraw as a back-end to do the actual processing of raw images, but present a graphical interface with which to adjust the image processing options.
Multiplatform:
Unix-like
operating systems:
Mac OS X:
Microsoft Windows:
RAW image format
A camera raw image file contains minimally processed data from the image sensor of either a digital camera, image scanner, or motion picture film scanner. Raw files are so named because they are not yet processed and therefore are not ready to be printed or edited with a bitmap graphics editor...
s, typically produced by high-end digital camera
Digital camera
A digital camera is a camera that takes video or still photographs, or both, digitally by recording images via an electronic image sensor. It is the main device used in the field of digital photography...
s. dcraw converts these images into the standard PPM
Portable pixmap
The phrase Netpbm format commonly refers to any or all of the members of a set of closely related graphics formats used and defined by the Netpbm project....
and TIFF
Tagged Image File Format
TIFF is a file format for storing images, popular among graphic artists, the publishing industry, and both amateur and professional photographers in general. As of 2009, it is under the control of Adobe Systems...
image formats. This conversion is sometimes referred to as developing a raw image (by analogy with the process of film development) since it renders raw image sensor data (a "digital negative
RAW image format
A camera raw image file contains minimally processed data from the image sensor of either a digital camera, image scanner, or motion picture film scanner. Raw files are so named because they are not yet processed and therefore are not ready to be printed or edited with a bitmap graphics editor...
") into a viewable form.
Motivation
While most camera manufacturers supply raw image decoding software for their cameras, this software is almost always proprietaryProprietary software
Proprietary software is computer software licensed under exclusive legal right of the copyright holder. The licensee is given the right to use the software under certain conditions, while restricted from other uses, such as modification, further distribution, or reverse engineering.Complementary...
, and often becomes unsupported when a camera model is discontinued. The file formats themselves are often undocumented, and several manufacturers have gone so far as to encrypt all or part of the data in their raw image format, in an attempt to prevent third-party software from accessing it.
Given this ever-expanding plethora of raw image formats, and uncertain and inconsistent support for them by the manufacturers, many photographers worry that their valuable raw images may become unreadable as the applications and operating systems required become obsolete.
In contrast to proprietary decoding software, dcraw strives for simplicity, portability, and consistency, as expressed by its author:
dcraw's open source nature is crucial in assuring this universality: even if its author loses interest in developing the software, or in supporting a particular model of camera, interested users are free to extend it. This helps ensure that it will be possible to decode supported raw image formats far into the future, even after the cameras that produced them are obsolete.
Design
dcraw is written by Dave Coffin in portable ANSI CANSI C
ANSI C refers to the family of successive standards published by the American National Standards Institute for the C programming language. Software developers writing in C are encouraged to conform to the standards, as doing so aids portability between compilers.-History and outlook:The first...
. Because many raw image formats are specific to one make or model of camera, dcraw is frequently updated to support new models.
For many proprietary
Proprietary software
Proprietary software is computer software licensed under exclusive legal right of the copyright holder. The licensee is given the right to use the software under certain conditions, while restricted from other uses, such as modification, further distribution, or reverse engineering.Complementary...
raw image formats, dcraw's source code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...
(based largely on reverse-engineering) is the best—or only—publicly-available documentation. dcraw currently supports the raw formats of several hundred cameras (including intentionally obfuscated
Obfuscated code
Obfuscated code is source or machine code that has been made difficult to understand for humans. Programmers may deliberately obfuscate code to conceal its purpose or its logic to prevent tampering, deter reverse engineering, or as a puzzle or recreational challenge for someone reading the source...
formats).
dcraw is built around the Unix philosophy
Unix philosophy
The Unix philosophy is a set of cultural norms and philosophical approaches to developing software based on the experience of leading developers of the Unix operating system.-McIlroy: A Quarter Century of Unix:...
. The program is a command line tool which takes a list of raw image files to process, along with any image adjustment options desired. This makes dcraw easy to use from shell script
Shell script
A shell script is a script written for the shell, or command line interpreter, of an operating system. It is often considered a simple domain-specific programming language...
s, but harder to call from C programs, as calling reliably out to other programs in C, especially in multithreaded software, can be very hard to get correct and deadlock-free. dcraw also serves as the basis for numerous high-level raw image-processing applications (such as viewers and converters), both free and open source software
Free and open source software
Free and open-source software or free/libre/open-source software is software that is liberally licensed to grant users the right to use, study, change, and improve its design through the availability of its source code...
as well as proprietary software
Proprietary software
Proprietary software is computer software licensed under exclusive legal right of the copyright holder. The licensee is given the right to use the software under certain conditions, while restricted from other uses, such as modification, further distribution, or reverse engineering.Complementary...
.
GUI frontends
Several GUIGui
Gui or guee is a generic term to refer to grilled dishes in Korean cuisine. These most commonly have meat or fish as their primary ingredient, but may in some cases also comprise grilled vegetables or other vegetarian ingredients. The term derives from the verb, "gupda" in Korean, which literally...
front-ends for dcraw are available. These applications use dcraw as a back-end to do the actual processing of raw images, but present a graphical interface with which to adjust the image processing options.
Multiplatform:
Unix-like
Unix-like
A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification....
operating systems:
- UFRawUFRawUFRaw is an application which can read and manipulate photographs in raw image formats, as created by many digital cameras. UFRaw is available both as a stand-alone utility, as a GIMP and CinePaint plugin, and in F-Spot via the DevelopInUFRaw extension...
, a standalone GTK+GTK+GTK+ is a cross-platform widget toolkit for creating graphical user interfaces. It is licensed under the terms of the GNU LGPL, allowing both free and proprietary software to use it. It is one of the most popular toolkits for the X Window System, along with Qt.The name GTK+ originates from GTK;...
application and GIMPGIMPGIMP is a free software raster graphics editor. It is primarily employed as an image retouching and editing tool and is freely available in versions tailored for most popular operating systems including Microsoft Windows, Apple Mac OS X, and Linux.In addition to detailed image retouching and...
plugin. - RawstudioRawstudioRawstudio is a stand-alone application, using the GTK+ UI toolkit, to read and manipulate images in Raw image formats from digital cameras. It is designed for working rapidly with a large volume of images, unlike similar tools, such as UFRaw, which are designed to work on one image at a...
, a standalone GTK+GTK+GTK+ is a cross-platform widget toolkit for creating graphical user interfaces. It is licensed under the terms of the GNU LGPL, allowing both free and proprietary software to use it. It is one of the most popular toolkits for the X Window System, along with Qt.The name GTK+ originates from GTK;...
application. - dcraw-assist, a KDEKDEKDE is an international free software community producing an integrated set of cross-platform applications designed to run on Linux, FreeBSD, Microsoft Windows, Solaris and Mac OS X systems...
-based GUI for dcraw and ImageMagickImageMagickImageMagick is an open source software suite for displaying, converting, and editing raster image files. It can read and write over 100 image file formats. ImageMagick is licensed under the Apache 2.0 license.- Features and capabilities:...
, supporting ICC-enabled high-quality, web-ready batched RAW conversion. - Not So Original, An online image gallery that permits you to manage your workflow and raw photographs with powerful operators.
- Raw TherapeeRaw TherapeeRawTherapee is a cross-platform raw image processing application, recently released under the GPLv3. It is written in C++ using a GTK+ front-end and dcraw by Gábor Horváth of Budapest, Hungary. It is notable in that it was one of the first raw converters available for Linux with a reasonably usable...
- digiKamDigiKamdigiKam is an image organizer and editor using KDE Platform. It runs on most known desktop environments and window managers if the required libraries are installed. It supports all major image file formats, and can organize collections of photographs in directory-based albums, or dynamic albums by...
Mac OS X:
- dcRAW-X for Mac OS X
- Raw TherapeeRaw TherapeeRawTherapee is a cross-platform raw image processing application, recently released under the GPLv3. It is written in C++ using a GTK+ front-end and dcraw by Gábor Horváth of Budapest, Hungary. It is notable in that it was one of the first raw converters available for Linux with a reasonably usable...
(from 3.0)
Microsoft Windows:
- AZImage Batch and GUI based image converter using LibRAW Lite to read raw formats
- EasyHDR uses DCRAW to access RAW files.
- Helicon FilterHelicon FilterHelicon Filter, also referred to as Helicon, Filter, or as HF, is a proprietary commercial and shareware photo editing software program for Microsoft Windows, similar to such programs as Adobe Photoshop and GIMP, developed and published by Helicon Soft Ltd...
, Proprietary, can use dcraw for its raw processing. - RAWDrop, Windows frontend.
- Zero Noise uses DCRAW as development engine to blend several RAW files into a noise free image with expanded dynamic range ideal for HDR.
- Raw TherapeeRaw TherapeeRawTherapee is a cross-platform raw image processing application, recently released under the GPLv3. It is written in C++ using a GTK+ front-end and dcraw by Gábor Horváth of Budapest, Hungary. It is notable in that it was one of the first raw converters available for Linux with a reasonably usable...
- Konvertor uses DCRAW to access RAW files.
Ports
An alpha quality reimplementation in C# exists - dcraw.netExternal links
- schnebeck.de, an Interview with Dave Coffin
- Raw storm in a teacup? Dpreview.com interviews with Dave Coffin, as he outlines some of the roadblocks to reverse-engineering presented by camera manufacturers.