ComfyUI-WepeNerd
Custom node pack featuring an interactive visual resolution picker and resolution suggestion tool with real-time dimension readout and divisor snapping. (Description by CC)
Nodes (19)
Your Qwen edit shifted the whole frame by three pixels. This node puts them back.
Keep only what Qwen actually changed — and keep the rest of the frame untouched
How far did Qwen actually move your image? This node gives you the number
The LoRA that only lives where you paint it
Stop typing resolutions — drag a box to set your output size
Your 111-Frame Video Came Back at 109 Frames. That's the Grid.
The two numbers that fix a clip that's almost right
Push-warp an image right inside the node
Wan wants 4n+1 frames — this loader hands them over without VHS
You shouldn't add this node — here's why it exists
The brush ComfyUI keeps making you leave the graph to find
Qwen Edit Has No Mask Input — So Draw One and Show It the Region
One dial, no cropping, no mental arithmetic
A resolution calculator that finally kills the 'not divisible by 64' errors
One file, sound inside, no FFmpeg scavenger hunt
Stop accepting whatever the scheduler dropdown gives you
The semantic LoRA slider
Sketch it inside the graph instead of opening Krita
Zoom Crop Doesn't Zoom, and That's Exactly Why It's Useful
ComfyUI-WepeNerd
Resolution tools, painting and image warping, and spatial LoRA masks for ComfyUI.
| Tool | What it does |
|---|---|
| Drag Resolution | Set dimensions visually with aspect-ratio and divisor controls |
| Resolution Suggest | Calculate dimensions from a target size or scale factor |
| Resize Image Megapixels | Resize an image batch to a target area without cropping |
| Zoom Crop | Remove width/height pixels and pick the kept area with a one-click 5×5 picker |
| Load Video (Upload) | Load a clip by frame cap and skip into an IMAGE batch, with audio, transparency mask, model frame presets, a readout of what will load, and a preview that loops the clip |
| Save Video | Save an IMAGE batch as MP4 (H.264, H.265, AV1), WebM, ProRes, lossless FFV1, GIF or WebP in one pass, with audio, transparency and the workflow embedded; no FFmpeg executable needed |
| Duration Selector | Pick a clip length that is legal for LTX, MiniMax H3, Wan, Hunyuan, Cosmos or Mochi, as frames or seconds kept in sync |
| Frame Slicer | Keep a run of frames (start to stop) from an IMAGE batch, like RES4LYF's Frames Slice |
| Speedpaint | Sketch from a blank canvas or imported image and output an IMAGE |
| Paint Mask | Paint a MASK over an uploaded or connected image and pass the IMAGE downstream |
| Liquify Image | Push-warp files or connected IMAGE batches with editable strokes and full-resolution output |
| Qwen Edit Mask | Paint where a Qwen-Image 2.1 edit should happen and get a guided reference image, mask and prompt |
| Image Edit Align Composite | Automatically align Qwen, Krea2 or other image edits and composite through a supplied or automatic mask |
| Image Edit Difference Mask | Align and isolate visual edits, with mask preview and cleanup controls |
| Image Edit Measure Drift | Optional measurement for inspecting or reusing an alignment fit |
| Sigma Curve | Draw a SIGMAS schedule by dragging points on a graph, with presets and exact numeric entry |
| Slider | Map a compact FLOAT control to your preferred strength range |
| Load LoRA Masked · Beta | Apply spatial LoRA/LoKr regions to native Krea2 models |
Installation
From your ComfyUI custom_nodes directory:
git clone https://github.com/WepeNerd/ComfyUI-WepeNerd.git
Using the Python environment that runs ComfyUI:
python -m pip install -r ComfyUI-WepeNerd/requirements.txt
Restart ComfyUI and refresh the browser. This pack uses Pillow, numpy, SciPy, and PyAV, plus Torch supplied by ComfyUI. It does not install GPU wheels, models, or external runtimes.
Quick start
Open the example workflow. Resolution Suggest controls Speedpaint's width and height; paint and click Queue to preview the result. Connect Speedpaint to VAE Encode to use it in a generation workflow.
- Speedpaint: choose New for a blank background. Load runs a connected
imageupstream and imports its first image; without a connection it opens the file picker. You can also drop an image onto the canvas. Use round or square brushes, colour, size, opacity, and pressure-to-size controls. Toggle the eraser (E) to restore the loaded image or blank background; B returns to painting. Ctrl/Cmd+Z undoes; Shift+Ctrl/Cmd+Z redoes; Alt-click samples a colour. - Resolution tools: choose a divisor that matches your model's required dimensions. Megapixel resizing retains the whole image, with small aspect changes possible from rounding.
- Load Video (Upload): upload/select a video under WepeNerd/Video and
connect
imagesto an IMAGE input. Pick the clip withskip_first_framesandframe_load_cap(121 by default, 0 for all, which keeps long videos from filling RAM); large skips jump straight there. The node shows what will load before you run it, and the muted preview loops over exactly that clip. A format preset trims the frame count to a model's rule and sets its frame rate. Connectaudiodownstream to keep the clip's soundtrack, or disableload_audioto skip audio decoding. - Save Video: connect
images(andaudio/maskif you have them) to WepeNerd/Video › Save Video. MP4 · H.264 plays everywhere; pick WebM, ProRes, FFV1, GIF or WebP when you need transparency. Drop the saved file onto the canvas to reload its workflow. - Liquify: load an image, or connect IMAGE and Queue once to see its preview. Drag to warp, use Undo/Redo, then Queue to render at the source resolution. Try the Liquify example.
- Masked LoRA: connect a native Krea2 MODEL, select a LoRA, and open Edit mask. Empty masks have no effect. This node is specific to Krea2 and remains in Beta.
- Qwen Edit Mask: open or drop an image (or connect IMAGE and click Load input),
paint the area to change, and type the edit in
instruction. Connectimagetoimage_1andprompttoprompton Text Encode Qwen Image 2.1, and set the encoder'sresolutionto 0. See the guide options. - Image Edit alignment: under WepeNerd/Image Edit, add Image Edit Align
Composite, connect the original to
sourceand the generated edit toedited, then savecomposite. Affine alignment and a cleaned automatic mask are enabled by default; Measure Drift is optional. Use Image Edit Difference Mask for a mask preview and finer cleanup controls. Pixels where the final mask is zero are copied exactly from the source. See the controls and limits.
See the node guide for controls, inputs, outputs, and limitations.
Saving paintings
Speedpaint supports dimensions from 64 to 4096 pixels and PNG, JPEG, or WebP imports. It has file import rather than an upstream IMAGE socket. Resizing painted work resizes the whole composition with Lanczos.
Paintings are stored in ComfyUI/input/wepenerd_speedpaint. Copy that folder with
your workflows when moving machines. Standard Save/Export and Queue wait for
pending writes. Undo and redo share a 30-operation / 128 MiB history budget;
history does not persist after reloading.
Compatibility
Tested with ComfyUI 0.34.0, frontend 1.51.10, Python 3.12, and Windows. Browser and CPU/CUDA layer checks are included; physical tablet behavior and full-model Krea2 image fidelity have not been comprehensively validated.
Masked LoRA supports native floating-point and INT8 ConvRot Krea2. Spatial masks can influence pixels outside the painted region through attention and denoising. A full mask does not necessarily match a global LoRA loader. See the node guide for unsupported model and adapter formats.
More WepeNerd tools
- LocalAI: local prompt enhancement and captioning.
- Experimental: 3D and video utilities.
The packages can be installed independently. Use current versions when combining them; the older all-in-one core includes duplicate nodes.
Liquify is included in core from 0.2.0. If you also have Experimental installed, update it to 0.2.0 or newer before restarting ComfyUI. Existing Liquify nodes and saved paintings keep their IDs and outputs.
Report an issue with a minimal workflow and the relevant console output. Licensed under MIT.