Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -2,6 +2,7 @@ import streamlit as st
|
|
2 |
import svgwrite
|
3 |
from PIL import Image
|
4 |
import urllib.request
|
|
|
5 |
|
6 |
DEFAULT_CARD_WIDTH = 75
|
7 |
DEFAULT_CARD_HEIGHT = 100
|
@@ -24,9 +25,11 @@ def draw_card(background, suit, value, level, card_width, card_height):
|
|
24 |
img = Image.open(background)
|
25 |
print("Image opened successfully")
|
26 |
img = img.resize((card_width, card_height))
|
27 |
-
|
28 |
-
|
29 |
-
|
|
|
|
|
30 |
dwg.add(img)
|
31 |
|
32 |
# Add suit and value labels
|
@@ -56,40 +59,25 @@ def display_size_selection(default_width, default_height):
|
|
56 |
card_height = st.sidebar.slider("Card Height", min_value=75, max_value=200, value=default_height, step=5)
|
57 |
return card_width, card_height
|
58 |
|
59 |
-
def display_image_uploadold():
|
60 |
-
uploaded_file = st.sidebar.file_uploader("Upload Card Background Image", type=["png", "jpg", "jpeg"])
|
61 |
-
if uploaded_file is not None:
|
62 |
-
image = Image.open(uploaded_file)
|
63 |
-
image.save("background.png")
|
64 |
-
return "background.png"
|
65 |
-
else:
|
66 |
-
return None
|
67 |
-
|
68 |
def display_image_upload():
|
69 |
uploaded_file = st.sidebar.file_uploader("Upload Card Background Image", type=["png", "jpg", "jpeg"])
|
70 |
if uploaded_file is not None:
|
71 |
image = Image.open(uploaded_file)
|
72 |
-
|
73 |
-
image.save(image_name)
|
74 |
-
return image_name
|
75 |
else:
|
76 |
return None
|
77 |
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
# Create a download link for the card SVG
|
83 |
-
svg_content = '<?xml version="1.0" encoding="utf-8" ?>' + card_svg
|
84 |
-
st.download_button("Download Card as SVG", svg_content, "card.svg", "text/plain")
|
85 |
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
|
94 |
st.set_page_config(page_title="Card Evolution Game", page_icon=":hearts:")
|
95 |
|
@@ -97,4 +85,8 @@ selected_parts = display_parts_selection()
|
|
97 |
selected_level = display_level_selection()
|
98 |
card_width, card_height = display_size_selection(DEFAULT_CARD_WIDTH, DEFAULT_CARD_HEIGHT)
|
99 |
background = display_image_upload()
|
|
|
|
|
|
|
|
|
100 |
display_card(selected_parts, selected_level, card_width, card_height, background)
|
|
|
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
|
|
|
25 |
img = Image.open(background)
|
26 |
print("Image opened successfully")
|
27 |
img = img.resize((card_width, card_height))
|
28 |
+
img_bytes = BytesIO()
|
29 |
+
img.save(img_bytes, format="PNG")
|
30 |
+
img_data = img_bytes.getvalue()
|
31 |
+
img_href = "data:image/png;base64," + img_data.hex()
|
32 |
+
img = svgwrite.image.Image(href=img_href, size=(f"{card_width}px", f"{card_height}px"))
|
33 |
dwg.add(img)
|
34 |
|
35 |
# Add suit and value labels
|
|
|
59 |
card_height = st.sidebar.slider("Card Height", min_value=75, max_value=200, value=default_height, step=5)
|
60 |
return card_width, card_height
|
61 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 = Image.open(uploaded_file)
|
66 |
+
return image
|
|
|
|
|
67 |
else:
|
68 |
return None
|
69 |
|
70 |
+
# Create a download link for the card SVG
|
71 |
+
svg_content = '<?xml version="1.0" encoding="utf-8" ?>' + card_svg
|
72 |
+
st.download_button("Download Card as SVG", svg_content, "card.svg", "text/plain")
|
|
|
|
|
|
|
|
|
73 |
|
74 |
+
# Create button to level up card
|
75 |
+
if selected_level != "level 3":
|
76 |
+
if st.button("Level Up"):
|
77 |
+
current_level_index = list(LEVELS.keys()).index(selected_level)
|
78 |
+
new_level = list(LEVELS.keys())[current_level_index + 1]
|
79 |
+
selected_level = new_level
|
80 |
+
st.sidebar.warning(f"Card has been leveled up to {selected_level}")
|
81 |
|
82 |
st.set_page_config(page_title="Card Evolution Game", page_icon=":hearts:")
|
83 |
|
|
|
85 |
selected_level = display_level_selection()
|
86 |
card_width, card_height = display_size_selection(DEFAULT_CARD_WIDTH, DEFAULT_CARD_HEIGHT)
|
87 |
background = display_image_upload()
|
88 |
+
|
89 |
+
if background is not None:
|
90 |
+
background = background.resize((card_width, card_height))
|
91 |
+
|
92 |
display_card(selected_parts, selected_level, card_width, card_height, background)
|