File size: 912 Bytes
50709ea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import gradio as gr
from diffusers import StableDiffusionInpaintPipeline
import torch
from PIL import Image
import base64
import io

# Load the Qwen Inpainting model
pipe = StableDiffusionInpaintPipeline.from_pretrained(
    "InstantX/Qwen-Image-ControlNet-Inpainting",
    torch_dtype=torch.float16
).to("cuda")

def edit_image(image, mask, prompt):
    image = image.convert("RGB")
    mask = mask.convert("L")  # Black = edit, White = keep
    result = pipe(
        prompt=prompt,
        image=image,
        mask_image=mask,
        num_inference_steps=30
    ).images[0]
    return result

# Gradio UI
demo = gr.Interface(
    fn=edit_image,
    inputs=[
        gr.Image(type="pil", label="Input Image"),
        gr.Image(type="pil", label="Mask Image"),
        gr.Textbox(label="Prompt")
    ],
    outputs=gr.Image(type="pil", label="Edited Image"),
    title="Qwen Image Inpainting"
)

demo.launch()