ZacTW's picture
Update app.py
c1303af verified
Raw
History Blame Contribute Delete
1.93 kB
import gradio as gr
import base64
import os
import traceback
from pathlib import Path
from gradio_client import Client
HF_TOKEN = os.environ.get("HF_TOKEN")
def generate_b64(prompt: str, seed: int = 42, steps: int = 8) -> str:
"""Generate an image with Z-Image-Turbo and return it as a base64-encoded WebP string.
Args:
prompt: Text prompt describing the desired image.
seed: Random seed for reproducibility. Default 42.
steps: Number of inference steps. Default 8.
Returns:
Base64-encoded WebP image bytes as an ASCII string, or ERROR: message.
"""
try:
if not HF_TOKEN:
return "ERROR: HF_TOKEN not set in Space secrets"
client = Client("mrfakename/Z-Image-Turbo", token=HF_TOKEN)
if prompt == "__DEBUG__":
info = client.view_api(return_format="dict", print_info=False)
return f"DEBUG: {str(info)[:3000]}"
result = client.predict(
prompt=prompt,
height=1024,
width=1024,
num_inference_steps=int(steps),
seed=int(seed),
randomize_seed=False,
api_name="/generate_image",
)
filepath = result[0] if isinstance(result, (tuple, list)) else result
if isinstance(filepath, dict):
filepath = filepath.get("path") or filepath.get("url")
data = Path(filepath).read_bytes()
return base64.b64encode(data).decode("ascii")
except Exception as e:
return f"ERROR: {type(e).__name__}: {str(e)}\n{traceback.format_exc()[:1500]}"
demo = gr.Interface(
fn=generate_b64,
inputs=[
gr.Textbox(label="prompt"),
gr.Number(label="seed", value=42),
gr.Number(label="steps", value=8),
],
outputs=gr.Textbox(label="base64_webp"),
title="Z-Image-Turbo Base64 Proxy",
)
if __name__ == "__main__":
demo.launch(mcp_server=True, show_error=True)