Nodes/ComfyUI-Darkroom/RAW Metadata Split
ComfyUI Node

RAW Metadata Split

RAW Metadata Split — pull ISO, lens, and film sim out of your RAW file

By jeremieLouvaert·Created 5 months ago·Updated 2 days ago· 101
RAW Metadata Split
  • 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.

CategoryAKURATE/Darkroom/RAW

Inputs (1)

NameTypeDefaultDescription
metadataRAW_METADATAConnect from Darkroom RAW Load's metadata output.

Outputs (15)

NameTypeDescription
camera_makeSTRING
camera_modelSTRING
lens_makeSTRING
lens_modelSTRING
isoINT
apertureFLOAT
shutter_secondsFLOAT
shutter_stringSTRING
focal_lengthFLOAT
focal_length_35mmFLOAT
datetimeSTRING
film_simulationSTRING
widthINT
heightINT
sensor_typeSTRING