kann_test / app.py
knnn11's picture
Update app.py
2564711 verified
Raw
History Blame Contribute Delete
2.31 kB
import os
import gradio as gr
import requests
from PIL import Image
from io import BytesIO
import base64
import logging
# Setup logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def generate_image(prompt):
try:
RUNPOD_API_KEY = os.getenv("RUNPOD_API_KEY")
RUNPOD_ENDPOINT = os.getenv("RUNPOD_ENDPOINT")
if not all([RUNPOD_API_KEY, RUNPOD_ENDPOINT]):
return None, "API credentials not configured"
payload = {
"input": {
"prompt": prompt,
"width": 768,
"height": 768,
"num_inference_steps": 20,
"return_base64": True
}
}
headers = {
"Authorization": f"Bearer {RUNPOD_API_KEY}",
"Content-Type": "application/json"
}
logger.info(f"Sending request to RunPod: {payload}")
response = requests.post(RUNPOD_ENDPOINT, json=payload, headers=headers, timeout=30)
if response.status_code != 200:
return None, f"API Error {response.status_code}: {response.text}"
data = response.json()
if "image" in data:
image_data = base64.b64decode(data["image"].split(",")[1])
return Image.open(BytesIO(image_data)), "Success!"
elif "output" in data and data["output"]:
image_url = data["output"][0]
img_data = requests.get(image_url, timeout=30).content
return Image.open(BytesIO(img_data)), "Success!"
else:
return None, "Unexpected response format"
except Exception as e:
logger.error(f"Error: {str(e)}")
return None, f"Error: {str(e)}"
with gr.Blocks() as app:
gr.Markdown("# 🎨 RunPod Image Generator")
with gr.Row():
prompt = gr.Textbox(label="Enter prompt", value="A comic book superhero")
generate_btn = gr.Button("Generate")
output = gr.Image(label="Generated Image")
status = gr.Textbox(label="Status")
generate_btn.click(
generate_image,
inputs=[prompt],
outputs=[output, status]
)
if __name__ == "__main__":
app.launch(server_name="0.0.0.0", server_port=7860)