embroideryai / app.py
aigorithm's picture
edited
c060212 verified
import streamlit as st
from PIL import Image
import numpy as np
import cv2
import svgwrite
import io
st.title("Image to Embroidery Converter")
st.write("Upload an image and get a stitch-style SVG preview.")
uploaded_file = st.file_uploader("Choose an image", type=["jpg", "jpeg", "png"])
def process_image(uploaded_image):
img = Image.open(uploaded_image).convert("L")
img = img.resize((300, 300))
img_np = np.array(img)
edges = cv2.Canny(img_np, threshold1=100, threshold2=200)
svg = svgwrite.Drawing(size=(img.width, img.height))
for y in range(1, edges.shape[0] - 1):
for x in range(1, edges.shape[1] - 1):
if edges[y, x] == 255:
svg.add(svg.circle(center=(x, y), r=0.4, fill='black'))
svg_buffer = io.StringIO()
svg.write(svg_buffer)
return svg_buffer.getvalue()
if uploaded_file:
st.image(uploaded_file, caption="Uploaded Image", use_column_width=True)
svg_data = process_image(uploaded_file)
st.download_button("Download SVG", data=svg_data, file_name="embroidery_preview.svg", mime="image/svg+xml")
st.markdown("### Embroidery Stitch Preview (SVG)")
st.code(svg_data, language="xml")