Spaces:
Paused
Paused
File size: 1,513 Bytes
8124057 17c447d 8124057 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
import gradio as gr
import requests
from PIL import Image
from io import BytesIO
import base64
# Hugging Face ControlNet API (Canny version)
HF_API = "https://api-inference.huggingface.co/models/lllyasviel/controlnet-sdxl-1.0-canny"
# Secure: fetch from secret
headers = {
"Authorization": f"Bearer {API_KEY}"
}
def generate_image(prompt, image):
buffered = BytesIO()
image.save(buffered, format="JPEG")
img_bytes = buffered.getvalue()
payload = {
"inputs": {
"prompt": prompt,
"image": base64.b64encode(img_bytes).decode("utf-8"),
"negative_prompt": "blurry, deformed, cropped"
},
"options": {"wait_for_model": True}
}
response = requests.post(HF_API, headers=headers, json=payload)
if response.status_code == 200:
img_out = Image.open(BytesIO(response.content))
return img_out
else:
return f"Error: {response.status_code} - {response.text}"
# Gradio UI
with gr.Blocks() as demo:
gr.Markdown("# 🧠 NewCrux AI Demo: Product → Lifestyle Image")
with gr.Row():
input_image = gr.Image(type="pil", label="Upload Product Image")
prompt_text = gr.Textbox(label="Enter Prompt", placeholder="e.g., A runner on a beach wearing this shoe")
output_image = gr.Image(label="Generated Lifestyle Image")
generate_btn = gr.Button("Generate Image")
generate_btn.click(fn=generate_image, inputs=[prompt_text, input_image], outputs=output_image)
demo.launch()
|