Spaces:
Runtime error
Runtime error
| 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) |