Spaces:
Runtime error
Runtime error
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 | |