Spaces:
Sleeping
Sleeping
import gradio as gr | |
from gradio_client import Client, handle_file | |
from gradio_imageslider import ImageSlider | |
from PIL import Image | |
import tempfile | |
import os | |
# Инициализируем клиент | |
client = Client("not-lain/background-removal") | |
def process_image_via_api(image): | |
# Сохраняем изображение во временный файл | |
with tempfile.NamedTemporaryFile(delete=False, suffix=".png") as temp_file: | |
image.save(temp_file.name) | |
temp_file_path = temp_file.name | |
result = client.predict( | |
image=handle_file(temp_file_path), | |
api_name="/image" | |
) | |
# Удаляем временный файл после использования | |
os.remove(temp_file_path) | |
# Convert the output tuple to PIL images and return | |
if result: | |
processed_image_path = result[0] | |
origin_image_path = result[1] | |
processed_image = Image.open(processed_image_path) | |
origin_image = Image.open(origin_image_path) | |
return (processed_image, origin_image) | |
return None, None | |
def process_url_via_api(url): | |
result = client.predict( | |
image=url, | |
api_name="/text" | |
) | |
# Convert the output tuple to PIL images and return | |
if result: | |
processed_image_path = result[0] | |
origin_image_path = result[1] | |
processed_image = Image.open(processed_image_path) | |
origin_image = Image.open(origin_image_path) | |
return (processed_image, origin_image) | |
return None, None | |
def process_file_via_api(f): | |
result = client.predict( | |
f=handle_file(f), | |
api_name="/png" | |
) | |
# Return the path to the saved PNG file | |
if result: | |
return result | |
return None | |
# Пример изображений | |
chameleon = "butterfly.jpg" | |
url_example = "https://hips.hearstapps.com/hmg-prod/images/gettyimages-1229892983-square.jpg" | |
# Tab 1: Image Upload | |
slider1_processed = ImageSlider(label="Processed Image", type="pil") | |
slider1_origin = ImageSlider(label="Original Image", type="pil") | |
image_upload = gr.Image(label="Upload an image") | |
tab1 = gr.Interface( | |
fn=process_image_via_api, | |
inputs=image_upload, | |
outputs=[slider1_processed, slider1_origin], | |
examples=[chameleon], | |
api_name="/image_api" | |
) | |
# Tab 2: URL Input | |
slider2_processed = ImageSlider(label="Processed Image", type="pil") | |
slider2_origin = ImageSlider(label="Original Image", type="pil") | |
url_input = gr.Textbox(label="Paste an image URL") | |
tab2 = gr.Interface( | |
fn=process_url_via_api, | |
inputs=url_input, | |
outputs=[slider2_processed, slider2_origin], | |
examples=[url_example], | |
api_name="/url_api" | |
) | |
# Tab 3: File Output | |
output_file = gr.File(label="Output PNG File") | |
image_file_upload = gr.Image(label="Upload an image", type="filepath") | |
tab3 = gr.Interface( | |
fn=process_file_via_api, | |
inputs=image_file_upload, | |
outputs=output_file, | |
examples=["butterfly.jpg"], | |
api_name="/png_api" | |
) | |
# Создаем интерфейс с вкладками | |
demo = gr.TabbedInterface( | |
[tab1, tab2, tab3], | |
["Image Upload", "URL Input", "File Output"], | |
title="Background Removal Tool" | |
) | |
if __name__ == "__main__": | |
demo.launch(show_error=True) |