DPX (SMPTE 268M-2003) is widely used in the motion picture and visual effects industry, leveraging extensive header information and the flexibility to handle high dynamic range and logarithmic color values across various bit depths using RGB or YCbCr pixel descriptions. It is based on, and largely supersedes, Kodak's Cineon format.
Typical workflows involve scanning film for post-production. Each frame is stored as an individual DPX file ranging from 2K (2048px wide) up to 8K (8192px wide for IMAX) at 8 to 64 bits per color component. Sequences are processed via compositing software before being recorded back to tape or projected onto film.
High Dynamic Range & Metadata
The header can contain production-specific film or television data. Television headers can store SMPTE timecodes to allow seamless replacement of shots exported as DPX sequences, while film headers preserve reel information and camera settings. These details follow the images throughout post-production pipelines.
Logarithmic Color Format
Color values are often stored logarithmically to mirror the density of color information in film emulsion. Unaltered logarithmic files appear low-contrast and require a look-up table (LUT) for cinematic projection. Beyond linearizing the image and adjusting gamma, LUTs define black and white points.
For 10-bit logarithmic images ranging from 0 to 1023, black and white points are typically set to 95 and 685, respectively. This stores color values lighter than pure white and darker than pure black, preserving extra highlight and shadow data for downstream grading.
DPX Properties
ImageMagick supports a comprehensive set of DPX metadata properties:
dpx:file.copyright
dpx:file.creator
dpx:file.filename
dpx:file.project
dpx:file.version
dpx:film.count
dpx:film.format
dpx:film.frame_id
dpx:film.frame_position
dpx:film.frame_rate
dpx:film.held_count
dpx:film.id
dpx:film.offset
dpx:film.prefix
dpx:film.sequence_length
dpx:film.shutter_angle
dpx:film.slate
dpx:film.type
dpx:orientation.aspect_ratio
dpx:orientation.border
dpx:orientation.device
dpx:orientation.filename
dpx:orientation.serial
dpx:orientation.x_center
dpx:orientation.x_offset
dpx:orientation.x_size
dpx:orientation.y_center
dpx:orientation.y_offset
dpx:orientation.y_size
dpx:television.black_gain
dpx:television.black_level
dpx:television.break_point
dpx:television.field_number
dpx:television.frame_rate
dpx:television.gamma
dpx:television.integration_times
dpx:television.interlace
dpx:television.padding
dpx:television.time.code
dpx:television.time_offset
dpx:television.user.bits
dpx:television.vertical_sample_rate
dpx:television.video_signal
dpx:television.white_level
dpx:user.id
dpx:user.data
User data can be accessed via the dpx:user-data image profile.
Command-Line Inspection & Modification
Inspect all associated properties using verbose output:
$ magick identify -verbose bluebells.dpx
Query a specific property format:
$ magick identify -format "%[dpx:television.time.code]" bluebells.dpx
Modify and write a property value:
$ magick bluebells.dpx -define dpx:television.time.code=10:00:02:15 bluebells-001.dpx
DPX Settings
Use -set to specify gamma, film gamma, or reference black and white points:
-set gamma 1.7
-set film-gamma 0.6
-set reference-black 95
-set reference-white 685
-set profile dpx:user.data



