ComfyUI Node

Image To Image

Send a local image to a remote GPU and get a variation back

By turnbros·Created 11 months ago·Updated 10 months ago· 0
Image To Image
  • input_image
  • image
  • metadata
instance_nameNo instances configured
positive_prompta creative variation of the original image
negative_prompt
checkpointcheckpoint_name.safetensors
steps20
cfg7.0
seed-1
sampler_nameeuler
schedulernormal
denoise0.70
input_image_string

Image To Image is the img2img member of the ComfyBros RunPod family. You hand it an image that lives in your local graph, it encodes that image to base64, ships it to your RunPod serverless endpoint with a prompt and sampling settings, and the endpoint runs an image-to-image workflow and sends back a variation. Your local GPU is a spectator the whole time.

The use case mirrors the text-to-image node but with the twist that you supply the starting image. That makes it the natural remote equivalent of the classic local img2img loop: take something you generated, feed it back with a changed prompt and a lower denoise, refine it. The denoise slider (default 0.7) is the dial that controls how far the output drifts from the input - high denoise, near-total reimagining; low denoise, subtle retouch. If your endpoint is built to host this workflow, this is how you run img2img on a GPU you don't own.

Inputs that matter

  • instance_name - the RunPod endpoint, selected from your configured instances (same settings-file mechanism as the rest of the cluster; empty means "No instances configured" and a hard error at run time).
  • input_image (required) - your local IMAGE. The node takes the first frame, converts to a base64 PNG, and sends it.
  • positive_prompt / negative_prompt - multiline; default positive is "a creative variation of the original image."
  • checkpoint - a string naming a model on the endpoint (default checkpoint_name.safetensors - note it's a placeholder, unlike the text-to-image node's real model name, so you'll want to change it).
  • steps (default 20), cfg (default 7), seed (default -1 = random), sampler_name (default euler), scheduler (default normal), denoise (default 0.7).

There's one optional input worth knowing: input_image_string, a multiline field where you can paste a base64 image string as an alternative to wiring an IMAGE. It's a fallback escape hatch for when the image arrives as text rather than a tensor.

Outputs

  • image - the IMAGE tensor of the variation, ready to preview or pipe onward.
  • metadata - STRING JSON with the echoed parameters and execution timing.

Installing it

ComfyBros installs like any custom node pack. ComfyUI Manager - search "ComfyBros" - or:

cd ComfyUI/custom_nodes
git clone https://github.com/turnbros/ComfyBros

Then restart ComfyUI. The README references a requirements.txt that doesn't exist; the declared deps are in pyproject.toml. The node lives under ComfyBros/Image Generation.

Gotchas

The checkpoint default is literally checkpoint_name.safetensors - a placeholder, and running with it as-is will likely fail server-side. Set it to something real on your endpoint (or check what's there with Module Management). And as with all the RunPod nodes: configure an instance first, and budget minutes for cold starts. If your upload is large, expect slower round trips - the image is base64'd and sent over the wire before generation even starts.

CategoryComfyBros/Image Generation

Inputs (12)

NameTypeDefaultDescription
instance_nameCOMBONo instances configured1 options: No instances configured
input_imageIMAGE
positive_promptSTRINGa creative variation of the original image
negative_promptSTRING
checkpointSTRINGcheckpoint_name.safetensors
stepsINT201–150
cfgFLOAT7.00.1–30
seedINT-1-1–2147483647
sampler_nameCOMBOeuler22 options: euler, euler_ancestral, heun, heunpp2, dpm_2, dpm_2_ancestral, +16
schedulerCOMBOnormal7 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +1
denoiseFLOAT0.700–1
input_image_stringoptSTRING

Outputs (2)

NameTypeDescription
imageIMAGE
metadataSTRING