ComfyUI Node

Image Painting Assistant

A fast, non-AI cartoon/painting filter for ComfyUI

By Isi-dev·Created 2 years ago·Updated 10 months ago· 13
Image Painting Assistant
  • image
  • lineArt
  • painting
  • sharpImage
painting_details26
painting_blur1
sharpness7
brightness1.0
hue0
saturation1.1
lightness1.4
contrast1.0
correct_black_Imgfalse

Worth saying up front, because it's easy to assume otherwise given everything else in ComfyUI: this node isn't a diffusion model, it doesn't touch a checkpoint, and it isn't doing img2img. It's a classic image-processing filter - blur, edge/line handling, color and tone adjustments, all deterministic - that turns a photo into something that reads as a painting or cartoon. That's actually the appeal. No sampler, no VRAM spike, no seed variance. Same input, same settings, same output, every time, instantly, on CPU if it has to be.

Where that fits in a real workflow: you've generated or loaded a photo-real image and want a stylized pass without re-running generation through a style LoRA or a ControlNet-guided img2img - either because you want to keep the exact composition pixel-for-pixel, or because you just want a quick cartoon/poster look without spinning up a whole second sampling pass. It's also handy purely as a sharpen-and-color-punch tool, independent of the painting effect, since one of its two outputs is just that.

The parameters - and what they're actually doing

The hue slider tops out at 179, not 360, which is a tell for anyone who's used OpenCV: that's HSV hue represented in 8-bit (0–179 instead of the usual 0–360 degrees), so this is running through OpenCV's color-space machinery under the hood rather than anything neural. A few of the numeric ones only accept odd values - painting_blur and sharpness both step by 2 - because blur/sharpen kernels need an odd size to have a defined center pixel; that's standard for this kind of filter, not a quirk of this node specifically.

  • painting_details (1–36, default 26) - how much of the "painted" look gets applied; push it up for a more stylized, less photographic result.
  • painting_blur (1–9, odd only, default 1) and sharpness (1–11, odd only, default 7) - the two competing forces behind the painterly effect: blur smooths detail into broader color regions, sharpness pulls edges back out so it doesn't just look soft. Defaults lean sharp.
  • brightness, contrast - the usual tone controls, both default to 1 (no change).
  • hue, saturation, lightness - color controls; saturation defaults slightly boosted (1.1) and lightness noticeably boosted (1.4), which tells you the node is tuned out of the box to punch the color up rather than leave it neutral.
  • correct_black_Img (boolean, default off) - a fix for images with crushed or overly dark blacks; flip it on if your source image is underexposed and the painting effect is coming out muddy.
  • lineArt (optional IMAGE) - feed in your own line-art pass (a Canny or Lineart preprocessor output, for instance) instead of letting the node derive edges from the source image itself. Worth reaching for when the automatic edges are picking up noise or missing detail you care about.

Two outputs: painting, the full stylized result, and sharpImage, a secondary output that's just the sharpness/tone-adjusted version of your input before the blur-and-detail painting step - useful on its own if you decide you just wanted a crisper, punchier image rather than the full cartoon treatment. Wire painting wherever you'd send a normal IMAGE - a Save Image, a Video Combine, further compositing.

Installing it

Through ComfyUI Manager, search Image to Painting and Inspyrenet Assistant Nodes (the pack's listed title - it won't necessarily match the repo name). Manually: cd ComfyUI/custom_nodes && git clone https://github.com/Isi-dev/ComfyUI-Img2PaintingAssistant, restart ComfyUI. There are no model weights to fetch and nothing GPU-heavy - it's plain image-processing code, so the install is about as painless as this ecosystem gets, and it'll run fine even on a machine with no meaningful GPU at all.

Common issues

Because everything here is a numeric filter rather than a learned model, the most common disappointment isn't an error - it's the effect looking too subtle or too aggressive, which just means you're pushing the wrong slider. If the result looks muddy or flat rather than painterly, that's usually painting_blur too high relative to sharpness, or a genuinely underexposed source image, in which case try correct_black_Img before touching anything else. If you're feeding a custom lineArt image and the outlines look wrong or missing, double-check that image is actually a proper line/edge map and not just a regular photo - this input expects edges, not a second photograph.

Categoryimage

Inputs (11)

NameTypeDefaultDescription
imageIMAGE
painting_detailsFLOAT261–36
painting_blurINT11–9
sharpnessINT71–11
brightnessFLOAT1.00.1–10
hueFLOAT00–179
saturationFLOAT1.10.1–10
lightnessFLOAT1.40.1–10
contrastFLOAT1.00–10
correct_black_ImgBOOLEANfalse
lineArtoptIMAGE

Outputs (2)

NameTypeDescription
paintingIMAGE
sharpImageIMAGE