Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import numpy as np | |
| import spaces | |
| import torch | |
| import random | |
| from PIL import Image | |
| from diffusers import FluxKontextPipeline | |
| from diffusers.utils import load_image | |
| import requests | |
| MAX_SEED = np.iinfo(np.int32).max | |
| pipe = FluxKontextPipeline.from_pretrained("black-forest-labs/FLUX.1-Kontext-dev", torch_dtype=torch.bfloat16).to("cuda") | |
| def translate_albanian_to_english(text): | |
| """Translate Albanian to English using sepioo-facebook-translation API.""" | |
| if not text.strip(): | |
| return "" | |
| for attempt in range(2): | |
| try: | |
| response = requests.post( | |
| "https://hal1993-mdftranslation1234567890abcdef1234567890-fc073a6.hf.space/v1/translate", | |
| json={"from_language": "sq", "to_language": "en", "input_text": text}, | |
| headers={"accept": "application/json", "Content-Type": "application/json"}, | |
| timeout=5 | |
| ) | |
| response.raise_for_status() | |
| translated = response.json().get("translate", "") | |
| return translated | |
| except Exception as e: | |
| if attempt == 1: | |
| raise gr.Error(f"Përkthimi dështoi: {str(e)}") | |
| raise gr.Error("Përkthimi dështoi. Ju lutem provoni përsëri.") | |
| def infer(input_image, prompt, seed=42, randomize_seed=False, guidance_scale=2.5, steps=12, progress=gr.Progress(track_tqdm=True)): | |
| """ | |
| Perform image editing using the FLUX.1 Kontext pipeline. | |
| """ | |
| # Translate Albanian prompt to English | |
| final_prompt = translate_albanian_to_english(prompt.strip()) if prompt.strip() else "" | |
| if not final_prompt: | |
| return None, seed, gr.Button(visible=False) | |
| if randomize_seed: | |
| seed = random.randint(0, MAX_SEED) | |
| if input_image: | |
| input_image = input_image.convert("RGB") | |
| image = pipe( | |
| image=input_image, | |
| prompt=final_prompt, | |
| guidance_scale=guidance_scale, | |
| width=input_image.size[0], | |
| height=input_image.size[1], | |
| num_inference_steps=steps, | |
| generator=torch.Generator().manual_seed(seed), | |
| ).images[0] | |
| else: | |
| image = pipe( | |
| prompt=final_prompt, | |
| guidance_scale=guidance_scale, | |
| width=1024, | |
| height=1024, | |
| num_inference_steps=steps, | |
| generator=torch.Generator().manual_seed(seed), | |
| ).images[0] | |
| return image, seed, gr.Button(visible=True) | |
| def infer_example(input_image, prompt): | |
| image, seed, _ = infer(input_image, prompt) | |
| return image, seed | |
| with gr.Blocks() as demo: | |
| gr.HTML(""" | |
| <style> | |
| body::before { | |
| content: ""; | |
| display: block; | |
| height: 320px; | |
| background-color: var(--body-background-fill); | |
| } | |
| button[aria-label="Fullscreen"], button[aria-label="Fullscreen"]:hover { | |
| display: none !important; | |
| visibility: hidden !important; | |
| opacity: 0 !important; | |
| pointer-events: none !important; | |
| } | |
| button[aria-label="Share"], button[aria-label="Share"]:hover { | |
| display: none !important; | |
| } | |
| button[aria-label="Download"] { | |
| transform: scale(3); | |
| transform-origin: top right; | |
| margin: 0 !important; | |
| padding: 6px !important; | |
| } | |
| </style> | |
| """) | |
| gr.Markdown("# Modifiko imazhet") | |
| gr.Markdown("Modifiko imazhet ne menyre universale ne baze te pershkrimit") | |
| with gr.Column(): | |
| input_image = gr.Image(label="Ngarko Imazhin për Editim", type="pil") | |
| prompt = gr.Textbox( | |
| label="Përshkrimi", | |
| placeholder="Shkruani përshkrimin këtu", | |
| lines=3 | |
| ) | |
| run_button = gr.Button(value="Gjenero") | |
| reuse_button = gr.Button("Rivendos këtë imazh", visible=False) | |
| # Hidden advanced settings | |
| seed = gr.Slider( | |
| minimum=0, | |
| maximum=MAX_SEED, | |
| step=1, | |
| value=0, | |
| visible=False | |
| ) | |
| randomize_seed = gr.Checkbox(value=True, visible=False) | |
| guidance_scale = gr.Slider( | |
| minimum=1, | |
| maximum=10, | |
| step=0.1, | |
| value=2.5, | |
| visible=False | |
| ) | |
| steps = gr.Slider( | |
| minimum=1, | |
| maximum=30, | |
| value=12, | |
| step=1, | |
| visible=False | |
| ) | |
| with gr.Row(): | |
| result = gr.Image(label="Imazhi i Gjeneruar", interactive=False) | |
| with gr.Row(): | |
| reuse_button = gr.Button("Përdor imazhin e gjeneruar", visible=False) | |
| gr.on( | |
| triggers=[run_button.click, prompt.submit], | |
| fn=infer, | |
| inputs=[input_image, prompt, seed, randomize_seed, guidance_scale, steps], | |
| outputs=[result, seed, reuse_button] | |
| ) | |
| reuse_button.click( | |
| fn=lambda image: image, | |
| inputs=[result], | |
| outputs=[input_image] | |
| ) | |
| demo.launch(mcp_server=True) |