Spaces:
Sleeping
Sleeping
File size: 1,195 Bytes
c060212 f85bd24 c060212 f85bd24 c060212 f85bd24 c060212 f85bd24 c060212 f85bd24 c060212 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
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") |