Image____ / app.py
gaur3009's picture
Create app.py
c6428de verified
raw
history blame
3.87 kB
import gradio as gr
import requests
import os
from PIL import Image
from io import BytesIO
from tqdm import tqdm
import time
# Defining the repository information and the trigger word
repo = "artificialguybr/TshirtDesignRedmond-V2"
trigger_word = "T shirt design, TshirtDesignAF, "
# Function to generate image based on the prompt
def generate_image(a, color_prompt, dress_type_prompt, design_prompt, typography, text, contrast, shadows):
prompt_parts = [a, color_prompt, dress_type_prompt, design_prompt]
# Optional parts
if text:
prompt_parts.extend([typography, text, contrast])
prompt_parts.append(shadows)
# Combine all parts into a full prompt
prompt = " ".join([part for part in prompt_parts if part])
print("Generating image with prompt:", prompt)
api_url = f"https://api-inference.huggingface.co/models/{repo}"
#token = os.getenv("API_TOKEN") # Uncomment and use your Hugging Face API token
headers = {
#"Authorization": f"Bearer {token}"
}
full_prompt = f"{prompt} {trigger_word}"
payload = {
"inputs": full_prompt,
"parameters": {
"negative_prompt": "(worst quality, low quality, normal quality, lowres, low details, oversaturated, undersaturated, overexposed, underexposed, grayscale, bw, bad photo, bad photography, bad art:1.4), (watermark, signature, text font, username, error, logo, words, letters, digits, autograph, trademark, name:1.2), (blur, blurry, grainy), morbid, ugly, asymmetrical, mutated malformed, mutilated, poorly lit, bad shadow, draft, cropped, out of frame, cut off, censored, jpeg artifacts, out of focus, glitch, duplicate, (airbrushed, cartoon, anime, semi-realistic, cgi, render, blender, digital art, manga, amateur:1.3), (3D ,3D Game, 3D Game Scene, 3D Character:1.1), (bad hands, bad anatomy, bad body, bad face, bad teeth, bad arms, bad legs, deformities:1.3)",
"num_inference_steps": 30,
"scheduler": "DPMSolverMultistepScheduler"
},
}
error_count = 0
pbar = tqdm(total=None, desc="Loading model")
while True:
print("Sending request to API...")
response = requests.post(api_url, headers=headers, json=payload)
print("API response status code:", response.status_code)
if response.status_code == 200:
print("Image generation successful!")
return Image.open(BytesIO(response.content)) # Changed to match the first code
elif response.status_code == 503:
time.sleep(1)
pbar.update(1)
elif response.status_code == 500 and error_count < 5:
time.sleep(1)
error_count += 1
else:
print("API Error:", response.status_code)
raise Exception(f"API Error: {response.status_code}")
# Gradio Interface
iface = gr.Interface(
fn=generate_image,
inputs=[
gr.Textbox(visible=False, placeholder="Hidden Part 1"), # a (hidden)
gr.Textbox(lines=1, placeholder="Color Prompt"), # color_prompt
gr.Textbox(lines=1, placeholder="Dress Type Prompt"), # dress_type_prompt
gr.Textbox(lines=2, placeholder="Design Prompt"), # design_prompt
gr.Textbox(visible=False, placeholder="Hidden Part 5"), # Typography (hidden)
gr.Textbox(lines=1, optional=True, placeholder="Text"), # text
gr.Textbox(visible=False, placeholder="Hidden Part 6"), # Contrast (hidden)
gr.Textbox(visible=False, placeholder="Hidden Part 9"), # Shadows (hidden)
],
outputs="image",
title="Clothe Designs to use in our img2img model",
description="Make designs for your clothes",
examples=[["a part", "Red", "T-shirt", "Simple design", "Bold Typography", "Stylish Text", "High Contrast", "Soft Shadows"]]
)
print("Launching Gradio interface...")
iface.launch()