Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import numpy as np | |
| import random | |
| import tenacity | |
| import requests | |
| from urllib.parse import quote | |
| from PIL import Image | |
| from io import BytesIO | |
| MAX_SEED = np.iinfo(np.int32).max | |
| MAX_IMAGE_SIZE = 1024 | |
| models_list=['flux', 'turbo', 'gptimage'] | |
| try: | |
| models_list=requests.get('https://image.pollinations.ai/models',timeout=2).json() | |
| except: | |
| pass | |
| def infer( | |
| prompt, | |
| seed, | |
| randomize_seed, | |
| width, | |
| height, | |
| # Enhancement | |
| enhance=False, # Auto-enhance prompt (default: False) | |
| image=None, # Input image URL for img2img | |
| # Privacy | |
| private=False, # Private generation (default: False) | |
| nologo=False, # Remove watermark (default: False) | |
| nofeed=False, # Don't add to public feed (default: False) | |
| model="flux" | |
| ): | |
| """ | |
| calling the pollinations.ai image generator | |
| Args: | |
| prompt: The description of the image (required) - "a fluffy dog in a forest" | |
| width: Image width in pixels | |
| height: Image height in pixels | |
| seed: A number to get the same image every time | |
| Returns: | |
| PIL.Image: The generated image. | |
| """ | |
| if randomize_seed: | |
| seed = random.randint(0, MAX_SEED) | |
| # Encode the prompt to handle spaces | |
| url = f"https://image.pollinations.ai/prompt/{quote(prompt)}" | |
| # Customize the image size and model | |
| params = {"width": width, "height": height, "model": model,"seed":seed} | |
| if image is not None and len(image)>1: | |
| params["image"]=image | |
| # Make the request | |
| response = requests.get(url, params=params, timeout=60) | |
| image_data = BytesIO(response.content) | |
| image = Image.open(image_data) | |
| return image, seed | |
| examples = [ | |
| "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k", | |
| "An astronaut riding a green horse", | |
| "A delicious ceviche cheesecake slice" | |
| ] | |
| css = """ | |
| #col-container { | |
| margin: 0 auto; | |
| max-width: 640px; | |
| } | |
| """ | |
| with gr.Blocks(css=css) as demo: | |
| with gr.Column(elem_id="col-container"): | |
| gr.Markdown(" # Text-to-Image using pollinations ai") | |
| with gr.Row(): | |
| prompt = gr.Text( | |
| label="Prompt", | |
| show_label=False, | |
| max_lines=3, | |
| placeholder="Enter your prompt", | |
| container=False, | |
| ) | |
| run_button = gr.Button("Run", scale=0, variant="primary") | |
| result = gr.Image(label="Result", show_label=False) | |
| with gr.Accordion("Advanced Settings", open=False): | |
| seed = gr.Slider( | |
| label="Seed", | |
| minimum=0, | |
| maximum=MAX_SEED, | |
| step=1, | |
| value=0, | |
| ) | |
| randomize_seed = gr.Checkbox(label="Randomize seed", value=True) | |
| with gr.Row(): | |
| width = gr.Slider( | |
| label="Width", | |
| minimum=256, | |
| maximum=MAX_IMAGE_SIZE, | |
| step=32, | |
| value=1024, # Replace with defaults that work for your model | |
| ) | |
| height = gr.Slider( | |
| label="Height", | |
| minimum=256, | |
| maximum=MAX_IMAGE_SIZE, | |
| step=32, | |
| value=1024, # Replace with defaults that work for your model | |
| ) | |
| with gr.Row(): | |
| enhance= gr.Checkbox(label="enhance prompt", value=False) | |
| nologo=gr.Checkbox(label="nologo", value=False) | |
| nofeed=gr.Checkbox(label="nofeed", value=False) | |
| private=gr.Checkbox(label="private", value=False) | |
| image=gr.Text( | |
| label="image", | |
| show_label=False, | |
| max_lines=3, | |
| placeholder="image url", | |
| container=False, | |
| ) | |
| model=gr.Dropdown(models_list, | |
| label="model", | |
| info="selected model", | |
| interactive=True, | |
| show_label=False, | |
| container=False | |
| ) | |
| gr.Examples(examples=examples, inputs=[prompt]) | |
| gr.on( | |
| triggers=[run_button.click, prompt.submit], | |
| fn=infer, | |
| inputs=[ | |
| prompt, | |
| seed, | |
| randomize_seed, | |
| width, | |
| height, | |
| enhance, | |
| image, | |
| private, | |
| nologo, # Remove watermark (default: False) | |
| nofeed, # Don't add to public feed (default: False) | |
| ], | |
| outputs=[result, seed], | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch(mcp_server=True) | |