Spaces:
Sleeping
Sleeping
File size: 2,250 Bytes
9b7a547 dd27f57 9b7a547 dd27f57 9b7a547 dd27f57 9b7a547 dd27f57 9b7a547 dd27f57 9b7a547 dd27f57 9b7a547 dd27f57 9b7a547 dd27f57 9b7a547 dd27f57 9b7a547 dd27f57 9b7a547 dd27f57 9b7a547 dd27f57 9b7a547 dd27f57 |
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 61 62 63 64 65 66 67 68 |
import os
import requests
import gradio as gr
# Hugging Face API
HF_API_URL = "https://api-inference.huggingface.co/models/stabilityai/stable-diffusion-3.5-large"
HF_API_KEY = os.getenv("HF_API_KEY")
# Chevereto API
CHEVERETO_API_URL = os.getenv("API_URL")
CHEVERETO_API_KEY = os.getenv("API_KEY")
CHEVERETO_ALBUM_ID = os.getenv("ALBUM_ID")
HEADERS = {"Authorization": f"Bearer {HF_API_KEY}"}
def generate_image(prompt: str):
"""Generates an image using Hugging Face's API"""
response = requests.post(HF_API_URL, headers=HEADERS, json={"inputs": prompt})
if response.status_code == 200:
image_data = response.content
image_path = "/tmp/generated_image.png"
with open(image_path, "wb") as f:
f.write(image_data)
return image_path
else:
return f"Error generating image: {response.text}"
def upload_to_chevereto(image_path: str):
"""Uploads the generated image to Chevereto and returns the URL"""
with open(image_path, "rb") as img_file:
files = {"source": img_file}
data = {"key": CHEVERETO_API_KEY, "format": "json", "album": CHEVERETO_ALBUM_ID}
response = requests.post(CHEVERETO_API_URL, files=files, data=data)
if response.status_code == 200:
return response.json().get("image", {}).get("url")
else:
return f"Error uploading image: {response.text}"
def generate_and_upload(prompt: str):
"""Combines image generation + upload and returns Chevereto URL"""
img_path = generate_image(prompt)
if "Error" in img_path:
return img_path
return upload_to_chevereto(img_path)
# Gradio UI
with gr.Blocks() as app:
gr.Markdown("<h1 style='text-align: center; color: red;'>🚀 Star Trek AI Image Generator</h1>")
with gr.Row():
prompt_input = gr.Textbox(label="Enter a prompt:", placeholder="A futuristic spaceship...")
generate_button = gr.Button("Generate & Upload")
image_output = gr.Image(label="Generated Image")
url_output = gr.Textbox(label="Image URL", interactive=False)
generate_button.click(
fn=generate_and_upload,
inputs=prompt_input,
outputs=[image_output, url_output]
)
app.launch(server_port=7860)
|