Spaces:
Runtime error
Runtime error
Update backup-app.py
Browse files- backup-app.py +14 -99
backup-app.py
CHANGED
|
@@ -1,100 +1,15 @@
|
|
| 1 |
import streamlit as st
|
| 2 |
-
import
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
def draw_card(background, suit, value, level, card_width, card_height):
|
| 18 |
-
print(f"Background image: {background}")
|
| 19 |
-
dwg = svgwrite.Drawing(size=(f"{card_width}px", f"{card_height}px"))
|
| 20 |
-
dwg.add(dwg.rect((0, 0), (card_width, card_height), rx=10, ry=10, fill="white", stroke="black", stroke_width=2))
|
| 21 |
-
|
| 22 |
-
# Add background image, if provided
|
| 23 |
-
if background:
|
| 24 |
-
img = Image.open(background)
|
| 25 |
-
print("Image opened successfully")
|
| 26 |
-
img = img.resize((card_width, card_height))
|
| 27 |
-
img.save(background)
|
| 28 |
-
print("Image resized and saved successfully")
|
| 29 |
-
img = svgwrite.image.Image(href=background, size=(f"{card_width}px", f"{card_height}px"))
|
| 30 |
-
dwg.add(img)
|
| 31 |
-
|
| 32 |
-
# Add suit and value labels
|
| 33 |
-
suit = svgwrite.text.Text(suit.upper(), insert=(5, 15), fill="black", font_size="16px", font_weight="bold")
|
| 34 |
-
dwg.add(suit)
|
| 35 |
-
value = svgwrite.text.Text(value, insert=(5, card_height - 10), fill="black", font_size="16px", font_weight="bold")
|
| 36 |
-
dwg.add(value)
|
| 37 |
-
|
| 38 |
-
# Add level label
|
| 39 |
-
level = svgwrite.text.Text(level.upper(), insert=(card_width - 50, card_height - 10), fill="black", font_size="12px", font_weight="bold")
|
| 40 |
-
svg_string = dwg.tostring()
|
| 41 |
-
return svg_string
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
def display_parts_selection():
|
| 45 |
-
selected_parts = {}
|
| 46 |
-
for part, options in PARTS.items():
|
| 47 |
-
selected_parts[part] = st.sidebar.selectbox(f"Select {part}", options)
|
| 48 |
-
return selected_parts
|
| 49 |
-
|
| 50 |
-
def display_level_selection():
|
| 51 |
-
selected_level = st.sidebar.selectbox("Select Level", list(LEVELS.keys()))
|
| 52 |
-
return selected_level
|
| 53 |
-
|
| 54 |
-
def display_size_selection(default_width, default_height):
|
| 55 |
-
card_width = st.sidebar.slider("Card Width", min_value=50, max_value=150, value=default_width, step=5)
|
| 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 |
-
image_name = uploaded_file.name
|
| 73 |
-
image.save(image_name)
|
| 74 |
-
return image_name
|
| 75 |
-
else:
|
| 76 |
-
return None
|
| 77 |
-
|
| 78 |
-
def display_card(selected_parts, selected_level, card_width, card_height, background):
|
| 79 |
-
card_svg = draw_card(background, selected_parts["suit"], selected_parts["value"], selected_level, card_width, card_height)
|
| 80 |
-
st.write(f'<svg viewBox="0 0 {card_width} {card_height}">{card_svg}</svg>', unsafe_allow_html=True)
|
| 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 |
-
# Create button to level up card
|
| 87 |
-
if selected_level != "level 3":
|
| 88 |
-
if st.button("Level Up"):
|
| 89 |
-
current_level_index = list(LEVELS.keys()).index(selected_level)
|
| 90 |
-
new_level = list(LEVELS.keys())[current_level_index + 1]
|
| 91 |
-
selected_level = new_level
|
| 92 |
-
st.sidebar.warning(f"Card has been leveled up to {selected_level}")
|
| 93 |
-
|
| 94 |
-
st.set_page_config(page_title="Card Evolution Game", page_icon=":hearts:")
|
| 95 |
-
|
| 96 |
-
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)
|
|
|
|
| 1 |
import streamlit as st
|
| 2 |
+
import os
|
| 3 |
+
|
| 4 |
+
def get_image_path(img):
|
| 5 |
+
file_path = f"data/uploadedImages/{img.name}"
|
| 6 |
+
os.makedirs(os.path.dirname(file_path), exist_ok=True)
|
| 7 |
+
with open(file_path, "wb") as img_file:
|
| 8 |
+
img_file.write(img.getbuffer())
|
| 9 |
+
return file_path
|
| 10 |
+
|
| 11 |
+
uploaded_file = st.file_uploader("**Upload Image**", type= ['png', 'jpg'] )
|
| 12 |
+
if uploaded_file is not None:
|
| 13 |
+
# Get actual image file
|
| 14 |
+
bytes_data = get_image_path(uploaded_file)
|
| 15 |
+
st.image(bytes_data)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|