2dGameAssetai / app.py
Tim13ekd's picture
Update app.py
8f07a9b verified
import gradio as gr
import requests
from PIL import Image
from io import BytesIO
# Pollinations API URL (hier wird die URL dynamisch basierend auf der Eingabe erzeugt)
BASE_URL = "https://gen.pollinations.ai/image/"
# Funktion zum Abrufen von Game Assets von Pollinations
def generate_game_asset(description):
# Erstelle die URL mit der Beschreibung und den gewünschten Parametern
encoded_description = description.replace(" ", "%20") # Ersetze Leerzeichen durch %20
url = f"{BASE_URL}{encoded_description}?model=flux&height=1024&width=1024&seed=42&enhance=true&nologo=true&safe=true&private=true"
try:
# Sende eine Anfrage an die Pollinations API
response = requests.get(url)
response.raise_for_status() # Falls ein Fehlerstatus (z.B. 404, 500) zurückkommt, wird eine Ausnahme ausgelöst
# Falls erfolgreich, lade das Bild
img_data = response.content
img = Image.open(BytesIO(img_data))
return img
except requests.exceptions.RequestException as e:
# Fehler beim Abrufen des Bildes (z.B. Netzwerkfehler oder ungültige URL)
print(f"Fehler beim Abrufen des Bildes: {e}")
# Leeres Bild zurückgeben, wenn ein Fehler auftritt
return Image.new("RGB", (1024, 1024), color=(255, 0, 0)) # Beispiel für ein rotes Fehlerbild
except Exception as e:
# Allgemeiner Fehlerbehandlung
print(f"Allgemeiner Fehler: {e}")
# Leeres Bild zurückgeben, wenn ein unbekannter Fehler auftritt
return Image.new("RGB", (1024, 1024), color=(255, 0, 0)) # Beispiel für ein rotes Fehlerbild
# Gradio Interface
def create_gradio_interface():
with gr.Blocks() as demo:
gr.Markdown("# Game Asset Generator")
gr.Markdown("Generiere Game Assets durch Eingabe einer Beschreibung und drücke 'Generieren'.")
# Textfeld für die Beschreibung
description_input = gr.Textbox(label="Asset Beschreibung", placeholder="z.B. Ein magischer Wald")
# Button, um die Bildgenerierung zu starten
generate_button = gr.Button("Generieren")
# Ausgabe für das generierte Bild
output_image = gr.Image(type="pil", label="Generiertes Game Asset")
# Aktion beim Drücken des Buttons
generate_button.click(generate_game_asset, inputs=description_input, outputs=output_image)
return demo
# Starte das Gradio Interface
demo = create_gradio_interface()
demo.launch()