Spaces:
Running
Running
import gradio as gr | |
from svgtrace import trace_image | |
import io | |
def convert_image_to_svg(image, threshold=128, line_thickness=1.0): | |
# Convert the uploaded image to bytes | |
image_bytes = io.BytesIO() | |
image.save(image_bytes, format='PNG') | |
image_bytes = image_bytes.getvalue() | |
# Convert the image to SVG using custom tracing options | |
svg = trace_image(image_bytes, threshold=threshold, line_thickness=line_thickness) | |
# Save the SVG output to a file | |
output_svg = 'output_image.svg' | |
with open(output_svg, 'w') as f: | |
f.write(svg) | |
return output_svg | |
# Set up Gradio interface with customizable options | |
def create_gradio_interface(): | |
inputs = [ | |
gr.inputs.Image(type="pil", label="Upload Image"), | |
gr.inputs.Slider(0, 255, default=128, label="Threshold"), | |
gr.inputs.Slider(0.1, 5.0, default=1.0, label="Line Thickness") | |
] | |
outputs = gr.outputs.File(label="Download SVG") | |
interface = gr.Interface( | |
fn=convert_image_to_svg, | |
inputs=inputs, | |
outputs=outputs, | |
title="Image to SVG Converter", | |
description="Upload an image and customize the options to convert it to a high-quality SVG file." | |
) | |
return interface | |
# Launch the Gradio interface | |
if __name__ == "__main__": | |
interface = create_gradio_interface() | |
interface.launch() | |