r3gm's picture
Update app.py
47ca6a2 verified
import gradio as gr
import imageio
import numpy as np
def hex_to_rgb(hex_color):
"""Convert hex color string (#RRGGBB) to an (R, G, B) tuple."""
hex_color = hex_color.lstrip("#")
return tuple(int(hex_color[i:i+2], 16) for i in (0, 2, 4))
def create_blank_image(width, height, hex_color):
"""Create a new RGB image with given width, height, and color."""
r, g, b = hex_to_rgb(hex_color)
img = np.full((height, width, 3), (r, g, b), dtype=np.uint8)
return img
def dummy(img, invert_mask):
if img is None:
raise ValueError("No image provided.")
mask = img["mask"]
if invert_mask and mask is not None:
mask = 255 - np.array(mask)
imageio.imwrite("output_image.png", mask)
return img["image"], mask
with gr.Blocks() as demo:
with gr.Accordion("Create Blank Image", open=False):
with gr.Row():
width_input = gr.Number(label="Width", value=512, precision=0)
height_input = gr.Number(label="Height", value=512, precision=0)
color_input = gr.ColorPicker(label="Color", value="#969696") # hex color
create_btn = gr.Button("Create Image")
with gr.Row():
img = gr.Image(tool="sketch", label="base image", show_label=True, min_width=600)
img1 = gr.Image()
img2 = gr.Image(label="mask image", show_label=True)
invert = gr.Checkbox(label="Invert mask")
btn = gr.Button("Process")
btn.click(dummy, [img, invert], [img1, img2])
create_btn.click(create_blank_image,
[width_input, height_input, color_input],
img)
demo.launch(debug=True, show_error=True, quiet=False)