Spaces:
Sleeping
Sleeping
| import os | |
| import requests | |
| import time | |
| from io import BytesIO | |
| from PIL import Image | |
| def generate_image(prompt: str): | |
| IMAGE_API_KEY = os.getenv("IMAGE_API_KEY") | |
| if not IMAGE_API_KEY: | |
| print("Error: IMAGE_API_KEY not found in environment variables.") | |
| return None | |
| url = "https://api.bfl.ml/v1/flux-pro-1.1" | |
| headers = { | |
| "accept": "application/json", | |
| "x-key": IMAGE_API_KEY, | |
| "Content-Type": "application/json" | |
| } | |
| payload = { | |
| "prompt": prompt, | |
| "width": 1024, | |
| "height": 1024, | |
| "guidance_scale": 1, | |
| "num_inference_steps": 50, | |
| "max_sequence_length": 512, | |
| "Safety Tolerance": 3, | |
| } | |
| # Sending the initial request to generate the image | |
| response = requests.post(url, headers=headers, json=payload).json() | |
| if "id" not in response: | |
| print("Error generating image:", response) | |
| return None | |
| request_id = response["id"] | |
| # Polling for the result | |
| while True: | |
| time.sleep(0.5) | |
| result = requests.get( | |
| "https://api.bfl.ml/v1/get_result", | |
| headers=headers, | |
| params={"id": request_id}, | |
| ).json() | |
| status = result.get("status") | |
| if status == "Ready": | |
| if "result" in result and "sample" in result["result"]: | |
| image_url = result["result"]["sample"] | |
| image_response = requests.get(image_url) | |
| if image_response.status_code == 200: | |
| image = Image.open(BytesIO(image_response.content)) | |
| return image | |
| else: | |
| print("Error fetching the image from the URL.") | |
| return None | |
| else: | |
| print("Error: No 'sample' key in result.") | |
| return None | |
| elif status == "Content Moderated": | |
| print("Image generation status: Content Moderated. Stopping generation.") | |
| break | |
| else: | |
| print(f"Image generation status: {status}") | |
| return None | |