Spaces:
Sleeping
Sleeping
import gradio as gr | |
import requests | |
import io | |
from io import BytesIO | |
import os | |
from PIL import Image | |
API_URL = "https://api-inference.huggingface.co/models/Kvikontent/kviimager2.0" | |
api_key = os.environ.get('API_KEY') | |
headers = {"Authorization": f"Bearer {api_key}"} | |
class QueryError(Exception): | |
pass | |
def query(payload): | |
try: | |
assert type(payload) == dict | |
response = requests.post(API_URL, headers=headers, json=payload) | |
if not str(response.status_code).startswith("2"): | |
raise QueryError(f"Query failed! Response status code was '{response.status_code}'") | |
return response.content | |
except AssertionError: | |
print("Invalid Payload Error: Please provide a dictionary.") | |
except RequestException as e: | |
print("Request Failed: ", e) | |
except ConnectionError as ce: | |
print("Connection Error: Unable to connect to the API.", ce) | |
except Timeout as t: | |
print("Timeout Error: Request timed out while trying to reach the API.", t) | |
except TooManyRedirects as tmr: | |
print("Too Many Redirects Error: Exceeded maximum number of redirects.", tmr) | |
except HTTPError as he: | |
print("HTTP Error: Invalid HTTP response.", he) | |
except QueryError as qe: | |
print(qe) | |
except Exception as ex: | |
print("Unknown Error occurred: ", ex) | |
def generate_images_from_prompt(prompt_text, num_images): | |
images = [] | |
for _ in range(num_images): | |
image_bytes = query({"inputs": prompt_text}) | |
img = BytesIO(image_bytes) | |
pil_img = Image.open(img) | |
images.append(pil_img) | |
return images | |
title = "KVIImager 2.0 Demo π¨" | |
description = "This app uses Hugging Face AI model to generate images based on the provided text prompt πΌ." | |
input_prompt = gr.Textbox(label="Enter Prompt π", placeholder="E.g. 'A peaceful garden with a small cottage'") | |
input_slider = gr.Slider(minimum=1, maximum=10, step=1, valuet=1, label="Number of Images per Prompt") | |
output_generated_images = gr.Image(label="Generated Image", type="pil") | |
iface = gr.Interface( | |
fn=generate_images_from_prompt, | |
inputs=[input_prompt, input_slider], | |
outputs=output_generated_images, | |
title=title, | |
description=description, | |
theme="soft" | |
) | |
iface.launch() |