Draw Things Img2Img
Img2img on Draw Things, driven from ComfyUI
- images
- generated_image
This is the img2img half of the Draw Things wrapper. You feed it an image, a prompt, and a denoise strength, and it sends the lot to the Draw Things app on your Mac to re-render. Draw Things does the diffusion - it's the fast Apple-Silicon engine - and ComfyUI gets the result back. Same deal as the Txt2Img node, just with an image going in instead of a blank canvas.
Why route img2img through Draw Things at all? Because on a Mac, Draw Things is meaningfully quicker than native ComfyUI - the developer built it specifically for Apple hardware, and the community's long-standing verdict is that nothing else touches its Apple Silicon optimization. This node lets you keep ComfyUI's flexibility (batching, queuing, chaining into other nodes) while the heavy lifting happens in the faster app. If you're not on a Mac running Draw Things, this node has nothing to call and isn't for you.
How it works
The node builds a dict of Draw Things settings from your inputs, attaches your input image, and POSTs it to the local Draw Things API on port 7860. Draw Things runs the img2img pass and streams the finished frame back as a ComfyUI IMAGE. Anything you leave unset on the node keeps whatever value it has in the Draw Things app - the node only overrides what you explicitly pass.
Note there's no width/height here, unlike the txt2img node - the output geometry follows the image you feed in.
The inputs that matter
images(IMAGE) - the picture you're transforming. Wire in a Load Image or the output of an earlier node.denoise(default 1.0, range 0–1) - the one that actually defines img2img. At 1.0 you basically ignore the input and generate fresh; drop toward 0.3–0.6 to keep the original's structure and just restyle or refine it. This is the dial you'll spend the most time on.model- a string that must match the Draw Things filename exactly, e.g. the defaultflux_1_dev_q8p.ckpt(Flux.1 [dev], Q8). Get it right via Draw Things' "..." → Copy configuration and paste; don't retype it.prompt,seed(42),steps(20),guidance_scale(3.5) - the standard controls.sampler- enum of 17 Draw Things samplers, defaultEuler A Trailing. These are Draw Things' sampler names, not ComfyUI's.
Output is generated_image (IMAGE) - send it to a preview, a save node, or the next stage of your graph.
How to install it
Two pieces. In Draw Things, open the Advanced tab, enable API Server (Protocol HTTP, Port 7860, IP localhost). That's the endpoint this node talks to.
Then the pack - ComfyUI Manager (search ComfyUI-DrawThingsWrapper, install, restart), or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/JosephThomasParker/ComfyUI-DrawThingsWrapper
cd ComfyUI-DrawThingsWrapper
pip install -r requirements.txt
then restart ComfyUI.
Common issues & troubleshooting
Denoise feels all-or-nothing. It's the most misunderstood input in img2img generally. 1.0 throws the source away; if your output ignores the input image, that's why - pull denoise down. Somewhere around 0.4–0.6 is the sweet spot for "same composition, new look."
Model name errors. Same trap as everywhere in this pack: the model string is a literal filename. Copy configuration → paste → use that exact text.
Re-running does nothing. ComfyUI only re-executes when a node input changes. Edit a value in the Draw Things app and ComfyUI won't notice - nudge the seed or any node input to force a fresh render.
You wanted inpainting. It won't happen through here. The Draw Things API can't accept masks, so inpainting is off the table for this pack entirely - do that inside the Draw Things app.
Reproducibility drift. Matching the seed isn't enough; the Draw Things app's own settings (LoRAs, guidance, sampler left on from an earlier session) feed into the result too. Line both sides up if you need the exact same image twice.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | input image | |
| model | STRING | flux_1_dev_q8p.ckpt | — |
| prompt | STRING | — | |
| seed | INT | 42 | — |
| guidance_scale | FLOAT | 3.50–25 | — |
| sampler | COMBO | Euler A Trailing | 17 options: UniPC, DPM++ 2M Karras, Euler a, DPM++ SDE Karras, PLMS, DDIM, +11 |
| steps | INT | 201–150 | — |
| denoise | FLOAT | 1.000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| generated_image | IMAGE | — |