FreeImage / app.py
harpertoken's picture
Upload app.py with huggingface_hub
000f7a6 verified
Raw History Blame Contribute Delete
2.19 kB
import gradio as gr
import requests
from PIL import Image
from io import BytesIO
import urllib.parse
import spaces
@spaces.GPU(duration=60)
def generate_image(prompt: str, width: int = 1024, height: int = 1024, seed: int = -1):
if not prompt or not prompt.strip():
return None, "Please enter a prompt."
encoded_prompt = urllib.parse.quote(prompt.strip())
url = f"https://image.pollinations.ai/prompt/{encoded_prompt}"
params = {
"width": width,
"height": height,
"nologo": "true",
"enhance": "true"
}
if seed != -1:
params["seed"] = int(seed)
try:
response = requests.get(url, params=params, timeout=90)
response.raise_for_status()
image = Image.open(BytesIO(response.content))
return image, f"✅ Generated successfully\nPrompt: {prompt}"
except Exception as e:
return None, f"❌ Error: {str(e)}"
with gr.Blocks(title="Image Generator") as demo:
gr.Markdown("""
# 🎨 Image Generator
Powered by **Pollinations.ai** - no API key needed.
""")
with gr.Row():
with gr.Column(scale=2):
prompt = gr.Textbox(
label="Prompt",
placeholder="A cute cat wearing sunglasses, cyberpunk style...",
lines=3
)
with gr.Row():
width = gr.Slider(512, 1280, value=1024, step=64, label="Width")
height = gr.Slider(512, 1280, value=1024, step=64, label="Height")
seed = gr.Number(value=-1, label="Seed (-1 = random)", precision=0)
generate_btn = gr.Button("Generate Image", variant="primary")
with gr.Column(scale=3):
output_image = gr.Image(label="Generated Image", type="pil")
status = gr.Textbox(label="Status", interactive=False)
generate_btn.click(
fn=generate_image,
inputs=[prompt, width, height, seed],
outputs=[output_image, status]
)
prompt.submit(
fn=generate_image,
inputs=[prompt, width, height, seed],
outputs=[output_image, status]
)
if __name__ == "__main__":
demo.launch(ssr_mode=False)