RAW Metadata Split
RAW Metadata Split — pull ISO, lens, and film sim out of your RAW file
- metadata
- camera_make
- camera_model
- lens_make
- lens_model
- iso
- aperture
- shutter_seconds
- shutter_string
- focal_length
- focal_length_35mm
- datetime
- film_simulation
- width
- height
- sensor_type
RAW Metadata Split is a small utility with an unusually good payoff: it takes the RAW_METADATA sidecar that Darkroom RAW Load produces and unpacks it into 15 typed primitives you can wire directly into other nodes. In a pack full of fancy color math, it's the boring node that makes the fancy ones automatic.
The pitch is simple. RAW Load gives you both an image and a metadata bundle. This node turns that bundle into real outputs - camera make and model, lens make and model, ISO, aperture, shutter speed (as both a float in seconds and a human string like 1/125s), focal length (plus the 35 mm equivalent), datetime, Fuji film simulation, image width/height, and sensor type. That's not trivia: the pack is explicitly designed for these to feed each other. Wire iso into Darkroom's Film Grain for ISO-scaled grain, lens_model into Lens Profile for the matching distortion/CA/vignette correction, focal_length_35mm into the Vignette lens presets. You get the metadata-driven workflow that a Camera Raw plugin has, but inside the node graph.
How it works
It's a straight unpack. The RAW_METADATA bundle is a dict read from the RAW file's EXIF via exifread; this node just pulls each key into a typed output with sensible defaults (empty strings and zeros when a field is absent). No processing, no magic - which is exactly why it's reliable. The typing matters for ComfyUI: strings land as STRING, ISO and dimensions as INT, apertures and focal lengths as FLOAT, so anything downstream that needs a number gets a number.
Inputs & outputs
One input: metadata (RAW_METADATA), connected from Darkroom RAW Load's metadata output. That's the whole interface.
The outputs, in order: camera_make, camera_model, lens_make, lens_model (STRING); iso (INT); aperture, shutter_seconds, shutter_string (FLOAT, FLOAT, STRING); focal_length, focal_length_35mm (FLOAT, FLOAT); datetime, film_simulation (STRING, STRING); width, height (INT, INT); sensor_type (STRING). If you don't need most of them, that's fine - leave the wires hanging; ComfyUI doesn't care.
Install & notes
Standard Darkroom install: Manager → search "Darkroom", or git clone https://github.com/jeremieLouvaert/ComfyUI-Darkroom + pip install -r requirements.txt + restart. No GPU, no models, no API keys - exifread (one of the pack's requirements) does the reading.
The one caveat is that it's a thin node with no real failure modes to speak of - if a field comes back empty, the RAW file just didn't record it, and the camera decides that, not the node. There's no second-guessing to do here.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| metadata | RAW_METADATA | Connect from Darkroom RAW Load's metadata output. |
Outputs (15)
| Name | Type | Description |
|---|---|---|
| camera_make | STRING | — |
| camera_model | STRING | — |
| lens_make | STRING | — |
| lens_model | STRING | — |
| iso | INT | — |
| aperture | FLOAT | — |
| shutter_seconds | FLOAT | — |
| shutter_string | STRING | — |
| focal_length | FLOAT | — |
| focal_length_35mm | FLOAT | — |
| datetime | STRING | — |
| film_simulation | STRING | — |
| width | INT | — |
| height | INT | — |
| sensor_type | STRING | — |