sdk/python/foundation-models/stabilityai/gradio_sample/Text_to_Image.py (75 lines of code) (raw):

import gradio as gr from io import BytesIO import json from PIL import Image import requests import base64 AZURE_ENDPOINT = "AZURE_AI_MAAS_ENDPOINT" + "/images/generations" KEY = "AZURE_AI_MAAS_ENDPOINT_KEY" def save_and_generate_image( prompt, output_format, negative_prompt, seed, size, progress=gr.Progress(track_tqdm=True), ): print(f"Image Prompt is : {prompt}") image = generate_image(prompt, output_format, negative_prompt, seed, size) image_path = "./generated_image.png" image.save(image_path) print(f"Image saved to {image_path}") return image_path def generate_image(prompt, output_format, negative_prompt, seed, size): params = { "prompt": prompt, "output_format": output_format, "size": size, "seed": seed, } if negative_prompt: params["negative_prompt"] = negative_prompt print(f"Sending request with params: {json.dumps(params, indent=2)}") headers = {"Authorization": f"{KEY}", "Accept": "application/json"} response = requests.post(AZURE_ENDPOINT, headers=headers, json=params) try: response.raise_for_status() except requests.exceptions.HTTPError as e: print(f"HTTPError: {e}") print(f"Response content: {response.content}") raise # Decode response image_data = base64.b64decode(response.json()["image"]) output_image = Image.open(BytesIO(image_data)) return output_image demo = gr.Interface( fn=save_and_generate_image, inputs=[ gr.Textbox( label="Enter your Image Prompt", placeholder="Describe your image..." ), gr.Radio(choices=["jpeg", "png"], label="Output Format", value="jpeg"), gr.Textbox( label="Negative Prompt (optional)", placeholder="What to avoid in the image" ), gr.Slider(minimum=0, maximum=1000, step=1, label="Seed (optional)", value=0), gr.Radio( choices=[ "672x1566", "768x1366", "836x1254", "916x1145", "1024x1024", "1145x916", "1254x836", "1366x768", "1566x672", ], label="Image Size", value="1024x1024", ), ], outputs=[gr.Image(label="Generated Image")], title="Stability AI on Azure AI | Text to Image", ) if __name__ == "__main__": demo.launch()