Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
import streamlit as st
|
2 |
import svgwrite
|
3 |
from PIL import Image
|
4 |
-
import urllib.request
|
5 |
from io import BytesIO
|
|
|
6 |
|
7 |
DEFAULT_CARD_WIDTH = 75
|
8 |
DEFAULT_CARD_HEIGHT = 100
|
@@ -21,7 +21,7 @@ def draw_card(background, suit, value, level, card_width, card_height):
|
|
21 |
dwg.add(dwg.rect((0, 0), (card_width, card_height), rx=10, ry=10, fill="white", stroke="black", stroke_width=2))
|
22 |
|
23 |
# Add background image, if provided
|
24 |
-
if background:
|
25 |
img = Image.open(background)
|
26 |
print("Image opened successfully")
|
27 |
img = img.resize((card_width, card_height))
|
@@ -62,12 +62,22 @@ def display_size_selection(default_width, default_height):
|
|
62 |
def display_image_upload():
|
63 |
uploaded_file = st.sidebar.file_uploader("Upload Card Background Image", type=["png", "jpg", "jpeg"])
|
64 |
if uploaded_file is not None:
|
65 |
-
|
66 |
-
|
|
|
|
|
67 |
else:
|
68 |
return None
|
69 |
|
70 |
def display_card(selected_parts, selected_level, card_width, card_height, background):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
card_svg = draw_card(background, selected_parts["suit"], selected_parts["value"], selected_level, card_width, card_height)
|
72 |
st.write(f'<svg viewBox="0 0 {card_width} {card_height}">{card_svg}</svg>', unsafe_allow_html=True)
|
73 |
|
@@ -83,14 +93,11 @@ def display_card(selected_parts, selected_level, card_width, card_height, backgr
|
|
83 |
selected_level = new_level
|
84 |
st.sidebar.warning(f"Card has been leveled up to {selected_level}")
|
85 |
|
|
|
86 |
st.set_page_config(page_title="Card Evolution Game", page_icon=":hearts:")
|
87 |
|
88 |
selected_parts = display_parts_selection()
|
89 |
selected_level = display_level_selection()
|
90 |
card_width, card_height = display_size_selection(DEFAULT_CARD_WIDTH, DEFAULT_CARD_HEIGHT)
|
91 |
background = display_image_upload()
|
92 |
-
|
93 |
-
if background is not None:
|
94 |
-
background = background.resize((card_width, card_height))
|
95 |
-
|
96 |
display_card(selected_parts, selected_level, card_width, card_height, background)
|
|
|
1 |
import streamlit as st
|
2 |
import svgwrite
|
3 |
from PIL import Image
|
|
|
4 |
from io import BytesIO
|
5 |
+
import os
|
6 |
|
7 |
DEFAULT_CARD_WIDTH = 75
|
8 |
DEFAULT_CARD_HEIGHT = 100
|
|
|
21 |
dwg.add(dwg.rect((0, 0), (card_width, card_height), rx=10, ry=10, fill="white", stroke="black", stroke_width=2))
|
22 |
|
23 |
# Add background image, if provided
|
24 |
+
if background and os.path.exists(background):
|
25 |
img = Image.open(background)
|
26 |
print("Image opened successfully")
|
27 |
img = img.resize((card_width, card_height))
|
|
|
62 |
def display_image_upload():
|
63 |
uploaded_file = st.sidebar.file_uploader("Upload Card Background Image", type=["png", "jpg", "jpeg"])
|
64 |
if uploaded_file is not None:
|
65 |
+
image_name = uploaded_file.name
|
66 |
+
with open(image_name, "wb") as f:
|
67 |
+
f.write(uploaded_file.getbuffer())
|
68 |
+
return image_name
|
69 |
else:
|
70 |
return None
|
71 |
|
72 |
def display_card(selected_parts, selected_level, card_width, card_height, background):
|
73 |
+
if background and os.path.exists(background):
|
74 |
+
img = Image.open(background)
|
75 |
+
img = img.resize((card_width, card_height))
|
76 |
+
img_bytes = BytesIO()
|
77 |
+
img.save(img_bytes, format="PNG")
|
78 |
+
img_data = img_bytes.getvalue()
|
79 |
+
img_href = "data:image/png;base64," + img_data.hex()
|
80 |
+
background = img_href
|
81 |
card_svg = draw_card(background, selected_parts["suit"], selected_parts["value"], selected_level, card_width, card_height)
|
82 |
st.write(f'<svg viewBox="0 0 {card_width} {card_height}">{card_svg}</svg>', unsafe_allow_html=True)
|
83 |
|
|
|
93 |
selected_level = new_level
|
94 |
st.sidebar.warning(f"Card has been leveled up to {selected_level}")
|
95 |
|
96 |
+
|
97 |
st.set_page_config(page_title="Card Evolution Game", page_icon=":hearts:")
|
98 |
|
99 |
selected_parts = display_parts_selection()
|
100 |
selected_level = display_level_selection()
|
101 |
card_width, card_height = display_size_selection(DEFAULT_CARD_WIDTH, DEFAULT_CARD_HEIGHT)
|
102 |
background = display_image_upload()
|
|
|
|
|
|
|
|
|
103 |
display_card(selected_parts, selected_level, card_width, card_height, background)
|