Spaces:
Running
Running
File size: 2,413 Bytes
9b7a547 dd27f57 9b7a547 dd27f57 9b7a547 f5815bd 9b7a547 dd27f57 9b7a547 dd27f57 9b7a547 dd27f57 9b7a547 dd27f57 9b7a547 dd27f57 9b7a547 dd27f57 9b7a547 dd27f57 b622977 dd27f57 b622977 9b7a547 dd27f57 9b7a547 dd27f57 9b7a547 b622977 |
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 69 70 |
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_TOKEN")
# 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 both the image path and Chevereto URL"""
img_path = generate_image(prompt)
if "Error" in img_path:
return img_path, "" # Return error message and empty string for URL
url = upload_to_chevereto(img_path)
return img_path, url # Return the image path and the Chevereto URL
# 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, share=True)
|