HunyuanImage-3 / app.py
Alae65's picture
Update app.py with complete fal.ai provider code including PIL import
0691226 verified
import gradio as gr
from huggingface_hub import InferenceClient
import os
import base64
from io import BytesIO
from PIL import Image
HF_TOKEN = os.environ.get("HF_TOKEN", "")
client = InferenceClient(provider="fal-ai", api_key=HF_TOKEN)
def generate_image_api(prompt, seed=42, num_inference_steps=50):
try:
image = client.text_to_image(
prompt,
model="tencent/HunyuanImage-3.0",
seed=int(seed),
num_inference_steps=int(num_inference_steps)
)
return image, seed, "Success!"
except Exception as e:
placeholder = Image.new('RGB', (1024, 1024), color=(240, 240, 245))
return placeholder, seed, f"Error: {str(e)}"
def infer(prompt, seed, randomize_seed, diff_infer_steps, image_size):
import random
if randomize_seed:
seed = random.randint(0, 2 ** 32 - 1)
image, used_seed, status = generate_image_api(prompt, seed, diff_infer_steps)
return image, used_seed, status
def api_generate(prompt: str, seed: int = 42, num_inference_steps: int = 50):
try:
image, used_seed, status = generate_image_api(prompt, seed, num_inference_steps)
buffered = BytesIO()
image.save(buffered, format="PNG")
img_str = base64.b64encode(buffered.getvalue()).decode()
return {
"success": True,
"image_base64": img_str,
"seed": used_seed,
"status": status,
"prompt": prompt
}
except Exception as e:
return {
"success": False,
"error": str(e),
"seed": seed,
"prompt": prompt
}
examples = [
"A brown and white dog is running on the grass",
"A futuristic city at sunset with flying cars",
"A serene mountain landscape with a crystal clear lake",
]
css = """
#col-container {
margin: 0 auto;
max-width: 800px;
}
.note {
background: #fff3cd;
padding: 15px;
border-radius: 8px;
margin: 10px 0;
}
"""
with gr.Blocks(css=css) as demo:
with gr.Column(elem_id="col-container"):
gr.Markdown("# 🎨 HunyuanImage-3.0 Text-to-Image using fal.ai Provider")
gr.Markdown(
"""
### Tencent HunyuanImage-3.0 - Using fal.ai Inference Provider
✅ هذه المساحة الآن تولّد صور حقيقية فعلياً عبر مزود fal.ai
🔗 كل شيء يعمل تلقائياً باستخدام التوكن HF_TOKEN من أسرارك.
""",
elem_classes="note"
)
with gr.Row():
prompt = gr.Text(
label="Prompt",
show_label=True,
max_lines=3,
placeholder="Enter your prompt for image generation...",
value="A serene mountain landscape with a crystal clear lake"
)
run_button = gr.Button("🎨 Generate Image", variant="primary")
result = gr.Image(label="Generated Image", show_label=True)
status_text = gr.Textbox(label="Status", interactive=False)
with gr.Accordion("Advanced Settings", open=False):
seed = gr.Slider(
label="Seed",
minimum=0,
maximum=2**32 - 1,
step=1,
value=42,
)
randomize_seed = gr.Checkbox(label="Randomize seed", value=True)
diff_infer_steps = gr.Slider(
label="Inference Steps",
minimum=1,
maximum=100,
step=1,
value=50,
)
image_size = gr.Radio(
choices=["1024x1024"],
value="1024x1024",
label="Image Size"
)
gr.Examples(
examples=examples,
inputs=[prompt],
outputs=[result, seed, status_text],
fn=infer,
cache_examples=False,
)
run_button.click(
fn=infer,
inputs=[prompt, seed, randomize_seed, diff_infer_steps, image_size],
outputs=[result, seed, status_text],
)
if __name__ == "__main__":
demo.launch()