# How to Create a Clothing Restyler App (IP Adapter, ControlNet + GPT Vision)

{% embed url="<https://youtu.be/rCEdrJ0bBkI>" %}

[Check out the example glif here!](https://glif.app/@fab1an/glifs/clyykf2l00000ce4q14sfy9zb)

### Step by step

1. Click **Build** to start a new glif project.
2. Add two Image Input Blocks.
3. Label one "Original Image" and the other "Style Image".
4. Add a Multipick Input Block.
5. List the integers 0.0 to 1.0 incrementally by 0.1 each step in the previous block.
6. Add a Glif Block.
7. Switch the Glif Block to GPT Vision.
8. Add the parameters outlined below.
9. Add an LLM Block and under "Advanced", select Claude 3.5 Sonnet.
10. Adjust the LLM to the below parameters.
11. (Optional) Add Several Text Combine Blocks to set values for the IPA Strength (1), Mask Blur (30), and Target (outfit).
12. (Optional) Add a Text Combine Block for the prompt: bizarre fashion photograph of person wearing \[style description], shot on film.
13. Add a ComfyUI Block.
14. Input below JSON into ComfyUI Block.
15. Publish the glif!

{% tabs %}
{% tab title="GPT Vision Input" %}
**Text Prompt**

`You're a fashion designer, taking inspiration from all sorts of images. Today you want to create a unisex outfit inspired by this image. Write a brief description of the outfit, focus on the style, theme, colors and fabrics and materials (bizarre is good!). This is for a high end weirdo fashion brand, so any and all materials are possible, you can even go sci-fi. Just go, write a 6-7 word sentence, no more, no yapping:`

**Image URL**

`[Style Image]`

**maxTokens**

`100`
{% endtab %}

{% tab title="Claude 3.5 Input" %}
**Prompt**

`Name a fashion trend based on an outfit that is the following: [gpt vision] Only return one or two words, no intro, just go, write it in ALL CAPS - make it very unique, not some lame existing genre (no "Cyberpunk"), it needs to super leftfield and weird!`

**Max Tokens**

`50`

**System Prompt**

`You're a fashion editor, picking up on the most insane and cool trends and subcultures. You name trends, often ending in -core.`
{% endtab %}

{% tab title="ComfyUI JSON" %}

```
{
  "38": {
    "inputs": {
      "model_name": "sam_vit_h (2.56GB)"
    },
    "class_type": "SAMModelLoader (segment anything)",
    "_meta": {
      "title": "SAMModelLoader (segment anything)"
    }
  },
  "40": {
    "inputs": {
      "image": "{image-input1}"
    },
    "class_type": "LoadImage",
    "_meta": {
      "title": "Load Image"
    }
  },
  "41": {
    "inputs": {
      "model_name": "GroundingDINO_SwinT_OGC (694MB)"
    },
    "class_type": "GroundingDinoModelLoader (segment anything)",
    "_meta": {
      "title": "GroundingDinoModelLoader (segment anything)"
    }
  },
  "42": {
    "inputs": {
      "prompt": "{target}",
      "threshold": 0.5,
      "sam_model": [
        "38",
        0
      ],
      "grounding_dino_model": [
        "41",
        0
      ],
      "image": [
        "40",
        0
      ]
    },
    "class_type": "GroundingDinoSAMSegment (segment anything)",
    "_meta": {
      "title": "GroundingDinoSAMSegment (segment anything)"
    }
  },
  "47": {
    "inputs": {
      "samples": [
        "52",
        0
      ],
      "vae": [
        "53",
        2
      ]
    },
    "class_type": "VAEDecode",
    "_meta": {
      "title": "VAE Decode"
    }
  },
  "52": {
    "inputs": {
      "seed": 452183510506570,
      "steps": 27,
      "cfg": 5,
      "sampler_name": "euler_ancestral",
      "scheduler": "normal",
      "denoise": 1,
      "model": [
        "73",
        0
      ],
      "positive": [
        "80",
        0
      ],
      "negative": [
        "74",
        1
      ],
      "latent_image": [
        "74",
        2
      ]
    },
    "class_type": "KSampler",
    "_meta": {
      "title": "KSampler"
    }
  },
  "53": {
    "inputs": {
      "ckpt_name": "Juggernaut_X_RunDiffusion.safetensors"
    },
    "class_type": "CheckpointLoaderSimple",
    "_meta": {
      "title": "Load Checkpoint"
    }
  },
  "54": {
    "inputs": {
      "text": "{prompt}",
      "clip": [
        "53",
        1
      ]
    },
    "class_type": "CLIPTextEncode",
    "_meta": {
      "title": "CLIP Text Encode (Prompt)"
    }
  },
  "55": {
    "inputs": {
      "text": "watermark, blurry, bad quality, illustration, pixelated, boring, ugly, wrong, tiled",
      "clip": [
        "53",
        1
      ]
    },
    "class_type": "CLIPTextEncode",
    "_meta": {
      "title": "CLIP Text Encode (Prompt)"
    }
  },
  "67": {
    "inputs": {
      "expand": [
        "88",
        1
      ],
      "incremental_expandrate": 0,
      "tapered_corners": true,
      "flip_input": false,
      "blur_radius": 15,
      "lerp_alpha": 1,
      "decay_factor": 1,
      "fill_holes": false,
      "mask": [
        "42",
        1
      ]
    },
    "class_type": "GrowMaskWithBlur",
    "_meta": {
      "title": "Grow Mask With Blur"
    }
  },
  "72": {
    "inputs": {
      "filename_prefix": "ComfyUI",
      "images": [
        "47",
        0
      ]
    },
    "class_type": "SaveImage",
    "_meta": {
      "title": "Save Image"
    }
  },
  "73": {
    "inputs": {
      "model": [
        "90",
        0
      ]
    },
    "class_type": "DifferentialDiffusion",
    "_meta": {
      "title": "Differential Diffusion"
    }
  },
  "74": {
    "inputs": {
      "positive": [
        "54",
        0
      ],
      "negative": [
        "55",
        0
      ],
      "vae": [
        "53",
        2
      ],
      "pixels": [
        "40",
        0
      ],
      "mask": [
        "67",
        0
      ]
    },
    "class_type": "InpaintModelConditioning",
    "_meta": {
      "title": "InpaintModelConditioning"
    }
  },
  "76": {
    "inputs": {
      "preset": "PLUS (high strength)",
      "model": [
        "53",
        0
      ]
    },
    "class_type": "IPAdapterUnifiedLoader",
    "_meta": {
      "title": "IPAdapter Unified Loader"
    }
  },
  "77": {
    "inputs": {
      "clip_name": "CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors"
    },
    "class_type": "CLIPVisionLoader",
    "_meta": {
      "title": "Load CLIP Vision"
    }
  },
  "78": {
    "inputs": {
      "variable": "{IPAstrength}",
      "fallback": ""
    },
    "class_type": "GlifVariable",
    "_meta": {
      "title": "Glif Variable"
    }
  },
  "79": {
    "inputs": {
      "control_net_name": "mistoLine_fp16.safetensors"
    },
    "class_type": "ControlNetLoader",
    "_meta": {
      "title": "Load ControlNet Model"
    }
  },
  "80": {
    "inputs": {
      "strength": [
        "82",
        2
      ],
      "conditioning": [
        "74",
        0
      ],
      "control_net": [
        "79",
        0
      ],
      "image": [
        "81",
        0
      ]
    },
    "class_type": "ControlNetApply",
    "_meta": {
      "title": "Apply ControlNet"
    }
  },
  "81": {
    "inputs": {
      "image": [
        "40",
        0
      ]
    },
    "class_type": "AnyLinePreprocessor",
    "_meta": {
      "title": "TheMisto.ai Anyline"
    }
  },
  "82": {
    "inputs": {
      "variable": "{cn_strength}",
      "fallback": ""
    },
    "class_type": "GlifVariable",
    "_meta": {
      "title": "Glif Variable"
    }
  },
  "83": {
    "inputs": {
      "image": "{image-input2}"
    },
    "class_type": "LoadImage",
    "_meta": {
      "title": "Load Image"
    }
  },
  "88": {
    "inputs": {
      "variable": "{maskblur}",
      "fallback": "10"
    },
    "class_type": "GlifVariable",
    "_meta": {
      "title": "Glif Variable"
    }
  },
  "90": {
    "inputs": {
      "weight_style": [
        "78",
        2
      ],
      "weight_composition": 0,
      "expand_style": false,
      "combine_embeds": "average",
      "start_at": 0,
      "end_at": 1,
      "embeds_scaling": "V only",
      "model": [
        "76",
        0
      ],
      "ipadapter": [
        "76",
        1
      ],
      "image_style": [
        "83",
        0
      ],
      "image_composition": [
        "83",
        0
      ],
      "clip_vision": [
        "77",
        0
      ]
    },
    "class_type": "IPAdapterStyleComposition",
    "_meta": {
      "title": "IPAdapter Style & Composition SDXL"
    }
  }
}
```

{% endtab %}
{% endtabs %}
