# app.py import sys import time from io import StringIO import streamlit as st from PIL import Image, ImageDraw, ImageColor from canvas import * from streamlit_ace import st_ace import extra_streamlit_components as stx from streamlit_image_select import image_select from sewar.full_ref import uqi import numpy as np # from sqlite3 import Connection import datetime from lines import * from triangle import * def get_manager(): return stx.CookieManager() ### Manage Cookies and ajs_state #### #time.sleep(3) #cookie_manager = get_manager() #ajs_id = cookie_manager.get_all()["ajs_anonymous_id"] date_reg = datetime.date.today().strftime("%d/%m/%Y") st.session_state['timestamp'] = datetime.datetime.now().strftime("%d/%m/%Y %H:%M:%S") #st.session_state['conn'] = get_connection("data_drawer.db") #user_checked = check_value_id_user(st.session_state.conn, ajs_id).values[0][0] > 0 #if not user_checked: # user_id = str(st.text_input("Welcome! please enter your username here:)")) # values = (ajs_id, user_id, date_reg) # insert_value_ajs_states (st.session_state.conn, values) ## Sidebar for color picker with st.sidebar: color = st.color_picker('color picker', '#00f900', key='l_c') st.write(ImageColor.getrgb(color)) st.header("Shape Puzzles") st.write("##") st.divider() st.markdown("###### Write your code here") ## Code input code = st_ace( language="python", theme="tomorrow_night_bright", keybinding="vscode", font_size=14, tab_size=4, show_gutter=True, min_lines=10, key="ace", ) st.divider() target = image_select( label="Select a target image", images=[ 'image/TrianglePolygon.png', 'image/TriangleHole.png', "image/TriangleCrash.png", 'image/archillect.png', 'image/TriangleFox.png' ], captions=["Iterative Polygon", "Infinite traps", "One Cut", "Archillect", "Red Fox"], use_container_width = False ) o1, o2 = st.columns(2) if code: ImageDraw.Draw(img).rectangle([(0, 0), (c_length,c_height)], fill = c_color, outline = c_outline, width=2) redirected_output = sys.stdout = StringIO() try: exec(code) result = str(redirected_output.getvalue()) st.code(result) except Exception as e: st.code(str(e)) st.write("##") st.divider() with o1: st.markdown("##### Target Shape:") target = Image.open(target) t2 = target.resize((c_length,c_height)) ImageDraw.Draw(img_t).rectangle([(0, 0), (c_length,c_height)], fill = c_color, outline = c_outline, width=2) img_t.paste(t2) st.image(img_t) st.session_state['imt'] = np.array(img_t) with o2: st.markdown("##### Output Shape") st.image(img, caption='') st.session_state['imo'] = np.array(img) #### Measuring Similarity sim = round(uqi(st.session_state['imt'],st.session_state['imo']),4) st.write(f"Similarity Score: {sim}")