Arcane_style_trans
Give Any Image the Arcane Look Without Re-Rolling the Prompt
- image
- IMAGE
Want the Arcane look, not a dice roll
There are two ways to get the painterly, hand-drawn Arcane style into your renders: re-generate with an Arcane LoRA or checkpoint and pray the prompt lands, or run a style-transfer pass over an image you already like. This node is the second one. It's a one-node wrapper around ArcaneGAN v0.4, a GAN trained on actual frames from the Netflix/Riot show, and it re-paints whatever you feed it in that bold, cel-shaded-with-brushstrokes look. Feed it a portrait, get a Riot splash-art portrait back. Same image every time - no prompt fiddling, no seed roulette. That consistency was the thing people noticed about ArcaneGAN back in 2022 and it still holds.
One honest caveat up front: it's a style pass, not a magic wand. It re-paints the whole image, faces included, so you're committing to the look. It's also GPU-only, which matters - more below.
How the one button works
When the node loads, it pulls in two things: MTCNN (a face detector) and the ArcaneGANv0.4.jit TorchScript model, both parked on CUDA in half precision. When you run it, it detects any face, scales the input so that face is around 256px (capped so it never upscales beyond the original), fits the image to your target resolution while keeping aspect, runs the GAN, and finally resizes to exactly your requested width × height with Lanczos. So the output is always precisely the resolution you asked for - the GAN just does the restyling underneath.
The inputs that matter (there are only three)
image- any IMAGE tensor. Wire in your KSampler → VAE Decode output. Note the code does asqueeze(0)on it, so it's single-image only; don't feed it a batch and expect magic.width/height- integers, default 512, range 256–4096 in steps of 8. These set the output size, and 512 is the model's happy place. Going bigger doesn't invent detail; it just Lanczos-upscales the GAN's output, so if you want a large Arcane piece, run this at 512-ish and upscale afterward.
Output is a single IMAGE in the usual 0–1 tensor range - straight into a Save Image or Preview Image node, or anything else that eats images.
Installing it, and the model it won't run without
The easy path: ComfyUI Manager → search comfyui_arcane_style_trans → Install → restart. Or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/atluslin/comfyui_arcane_style_trans
# restart ComfyUI (or reload via Manager)
The requirements (facenet_pytorch, torchvision, Pillow, gradio, tqdm, pystuck) install with the pack. But here's the part everyone misses: the node will not even load until you give it its model. Download ArcaneGANv0.4.jit from the Sxela/ArcaneGAN repo - that's where the pack's (Chinese, one-line) README points - and drop it in:
ComfyUI/custom_nodes/comfyui_arcane_style_trans/models/ArcaneGANv0.4.jit
Miss this and you get a FileNotFoundError on startup. There's also a HuggingFace Gradio space (akhaliq/ArcaneGAN) if you want to try the effect before bothering.
Where people get stuck
- CPU-only ComfyUI? This node will crash. The model is loaded with
.cuda().half()and there's no fallback - if you run without a GPU, skip this one. That's the #1 gotcha and it's baked into the code, not the README. - Model path wrong. The file name must be exactly
ArcaneGANv0.4.jitin the pack's ownmodels/folder, not in ComfyUI's mainmodels/directory. - It's an obscure pack. Zero Google impressions, one-line Chinese README, and the category is
🔥🔥🔥ljeasynode🔥🔥🔥/风格化(that's "stylization"). If you see error spam from the pack, you're mostly on your own - but at ~150 lines of Python, the source is readable enough to debug.
The workflow takeaway: generate your base image, run this once for the Arcane finish, upscale if you want it big. Compared to hunting for the perfect Arcane LoRA and burning twenty seeds, it's one node and a file you download once. Just remember the GPU requirement.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| width | INT | 512256–4096 | — |
| height | INT | 512256–4096 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |