Time to try another ControlNet for Stable Diffusion XL - QR Code Monster v1 in ComfyUI. This ControlNet can influence SDXL such that the generated image “hides” a scan-able QR code, which at first glance, looks like a photo!
Installing
I am using vanilla ComfyUI, with SDXL and LCM LoRA for SDXL.
All that is needed is to download QR monster diffusion_pytorch_model.safetensors
, rename it e.g. to control_v1p_sdxl_qrcode_monster.safetensors
, and save it to comfyui/controlnet
.
Workflow
Here is the workflow with full SDXL:
- Start off with the usual SDXL workflow - CheckpointLoaderSimple > CLIPTextEncodeSDXL prompt and CLIPTextEncode negative prompt
- Use ControlNetLoader to load the QR Monster ControlNet
- And use LoadImage to load a PNG QR code, sized 1024x1024 - I created my QR codes using the iPhone’s Shortcuts app with the highest
Error Correction
level selected. - And insert a ControlNetApplyAdvanced node to take the
conditioning
outputs from both CLIP Text Encoders and pass theconditioning
output to a KSamplerAdvanced node - The trick is adjusting the Apply Control Net
strength
(0.8 to 0.9) and perhaps the KSamplercfg
value so that you have a creative image that makes the QR code less obvious but that can still be read - the higher the closer to the original source image.
And here is another with the SDXL LCM LoRA - I go from 20 steps to just 7!
I tested these QR codes on my iPhone - for some images, the Camera app simply could not locate the QR code, but the dedicated (QR) Code scanner could! Add it to the Control Center from the Settings.
Experiments
Here are a few beautiful QR codes I generated containing a URL:
And here is the same workflow, used to “hide” a famous painting in plain sight - squint and view from a distance!