Camera Styler
Name a real camera, drop the plastic look
- text_positive
- text_negative
CameraStyler is the one node in this pack I'd actually reach for on a photoreal workflow. It's a dropdown of ~127 real camera bodies - Canon EOS R5, the Rebel line, and on down the list - and picking one injects that camera's name into your prompt at a strong weight. Sounds like a gimmick. It isn't, and there's a real reason why.
Naming a physical piece of camera equipment is one of the highest-leverage phrases in photoreal prompting. It drops the model out of its glossy "beauty default" faster than any pile of realistic, candid, amateur, 8k modifiers ever will, because the encoder was trained on real photo captions that mention real gear. So a node whose entire job is to paste a specific camera model into your prompt is doing exactly the thing that works - it's just doing it from a menu instead of your memory.
How it works
MileHighStyler is a big fork of the well-known SDXL Prompt Styler, the drop-down style-injection node. Each menu entry is a small JSON template with a {prompt} slot; CameraStyler drops your text_positive into that slot and wraps the camera phrasing around it. Per the pack docs, the style text is wrapped at a strong default weight (~2.0) so it registers.
It's a text tool, full stop. It doesn't read EXIF, it doesn't simulate a lens, it doesn't touch pixels - it rewrites your prompt string. The camera name is a caption cue, and the model does the rest.
The inputs and outputs that matter
- camera - the ~127-entry dropdown.
no camerais the off position. - text_positive - your subject and scene; it lands inside the template.
- text_negative - optional negative text to carry through.
log_prompt prints the assembled prompt to the console - handy for seeing precisely what string the camera menu added. Outputs are text_positive and text_negative as plain strings, straight into a CLIP Text Encode.
Installing it
ComfyUI Manager: search ComfyUI_MileHighStyler, install, restart. Or terminal:
cd ComfyUI/custom_nodes && git clone https://github.com/TripleHeadedMonkey/ComfyUI_MileHighStyler
then restart. No models, no requirements.txt, no heavy dependencies - just Python and JSON, so it's a painless install. Nodes appear under ali1234/stylers.
Where people get burned
- You didn't need the node. Honestly, once you know the trick, you can type "Canon EOS R5" straight into your prompt and get the same result. CameraStyler's value is the menu and the consistency, not magic - if you already prompt cameras by hand, this is convenience, not capability.
- Film stock beats camera body for color. If what you actually want is a look - warm skin, night halation, black-and-white grain - a film stock name (Kodak Portra 400, Cinestill 800T, Ilford HP5) is the more reliable control. CameraStyler is about the body; pair it with a stock name in your own text.
- Model era. The
2.0weighting this bakes in is CLIP-encoder syntax and gets discarded on the 2026 LLM-encoded models (Flux 2, Z-Image, Qwen). The good news is the camera name still helps on those models even without the weight - so on newer models, skip this node and just write the camera into your prompt as plain words. On the SDXL family and SD1.5, the node works as intended. - Negatives at CFG 1. If any camera entry carries a negative, remember it only does something above CFG 1. On Turbo/Lightning checkpoints running CFG 1, the negative isn't computed at all.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| text_positive | STRING | — | |
| text_negative | STRING | — | |
| camera | COMBO | 127 options: no camera, Canon EOS 90D, Canon EOS M50, Canon EOS M50 Mark II, Canon EOS M6 Mark II, Canon EOS R5, +121 | |
| log_prompt | BOOLEAN | true | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| text_positive | STRING | — |
| text_negative | STRING | — |