Spaces:
Running
Running
| 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() | |