File size: 2,504 Bytes
3db5da0
 
 
 
 
b206033
 
3db5da0
 
 
b206033
 
 
3db5da0
a700c23
 
 
 
 
 
3db5da0
 
 
a700c23
 
 
 
8f07a9b
 
 
a700c23
8f07a9b
a700c23
8f07a9b
 
3db5da0
 
 
 
 
b206033
3db5da0
b206033
3db5da0
b206033
 
 
 
 
3db5da0
 
b206033
 
3db5da0
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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()