Spaces:
Running
Running
import gradio as gr | |
import os | |
from huggingface_hub import InferenceClient | |
from gradio_client import Client, handle_file | |
def infer(text_prompt, action_prompt, profile: gr.OAuthProfile, oauth_token: gr.OAuthToken): | |
gradio_auth_token = oauth_token.token | |
print(f"OAuth token: {oauth_token.token}") | |
inf_client = InferenceClient( | |
provider="fal-ai", | |
api_key=gradio_auth_token | |
) | |
# output is a PIL.Image object | |
image = inf_client.text_to_image( | |
text_prompt, | |
model="multimodalart/isometric-skeumorphic-3d-bnb", | |
) | |
import tempfile | |
# Create a temporary PNG file | |
with tempfile.NamedTemporaryFile(suffix=".png", delete=False) as tmp_file: | |
temp_image_path = tmp_file.name | |
image.save(temp_image_path, format="PNG") | |
print(f"✅ Image saved temporarily at: {temp_image_path}") | |
gr_client = Client("Lightricks/ltx-video-distilled", hf_token=gradio_auth_token) | |
action_prompt = f"{action_prompt}, RBNBICN, icon, white background, isometric perspective" | |
result = gr_client.predict( | |
prompt=action_prompt, | |
negative_prompt="worst quality, inconsistent motion, blurry, jittery, distorted", | |
input_image_filepath=handle_file(temp_image_path), | |
input_video_filepath=None, | |
height_ui=512, | |
width_ui=704, | |
mode="image-to-video", | |
duration_ui=2, | |
ui_frames_to_use=9, | |
seed_ui=42, | |
randomize_seed=True, | |
ui_guidance_scale=1, | |
improve_texture_flag=True, | |
api_name="/image_to_video" | |
) | |
print(result) | |
video_path = result[0]['video'] | |
return temp_image_path, video_path | |
with gr.Blocks() as demo: | |
with gr.Column(): | |
gr.LoginButton() | |
text_prompt = gr.Textbox(label="Icon label") | |
action_prompt = gr.Textbox(label="Action label") | |
submit_btn = gr.Button("Submit") | |
image_out = gr.Image() | |
video_out = gr.Video() | |
submit_btn.click( | |
fn = infer, | |
inputs = [text_prompt, action_prompt], | |
outputs = [image_out, video_out] | |
) | |
demo.launch(show_error=True) | |