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()