GrainSight / src /ui /drawable_canvas.py
fazzam's picture
update app
e6748e7 verified
# src\ui\drawable_canvas.py
import streamlit as st
from streamlit_drawable_canvas import st_canvas
from PIL import Image
def drawable_canvas(uploaded_image, input_size):
"""Creates a Streamlit drawable canvas with the resized image as the background."""
# Generate a unique key for the canvas based on the input size
canvas_key = f"canvas_{input_size}"
st.write("Draw a line to set the scale:")
original_image = Image.open(uploaded_image)
image_width, image_height = original_image.size
scale = input_size / max(image_width, image_height)
new_w = int(image_width * scale)
new_h = int(image_height * scale)
resized_image = original_image.resize((new_w, new_h))
canvas_result = st_canvas(
fill_color="rgba(255, 165, 0, 0.3)",
stroke_width=10,
stroke_color="#e00",
background_image=resized_image,
height=new_h,
width=new_w,
drawing_mode="line",
key=canvas_key,
)
return canvas_result