ColorMasking / ui.py
kwilliamson's picture
fixing small issue with sketchpad
163cc53
import gradio as gr
from PIL import Image
from models import LineartGenerator
class SketchToImageApp:
"""
An application that combines a user’s annotated sketch with original lineart,
and then generates an image using a ControlNet-based pipeline.
"""
def __init__(self, lineart_generator: LineartGenerator):
self.lineart_generator = lineart_generator
def generate_image(self, brush_canvas: dict, uploaded_file) -> Image.Image:
merged_lineart = self.lineart_generator.merge_lineart_and_brush(brush_canvas, uploaded_file)
return self.lineart_generator.generate_image(merged_lineart, num_inference_steps=30)
def create_interface(self) -> gr.Blocks:
with gr.Blocks() as app:
gr.Markdown(
"# Lineart & Color Mask With Controlnet\n"
"Brush strokes will be applied behind the processed lineart so that the "
"black lines always remain visible."
)
lineart_file_input = gr.File(
label="Upload Lineart Sketch",
file_types=["image"],
file_count="single"
)
with gr.Row():
brush_canvas_input = gr.Sketchpad(
label="Annotate Your Lineart",
type="numpy",
brush=gr.Brush(),
)
lineart_file_input.change(
fn=self.lineart_generator.load_lineart_image,
inputs=lineart_file_input,
outputs=brush_canvas_input
)
generate_button = gr.Button("Generate")
output_image = gr.Image(label="Generated Image")
generate_button.click(
fn=self.generate_image,
inputs=[brush_canvas_input, lineart_file_input],
outputs=output_image
)
return app