Danzer93's picture
Update app.py
58ae247 verified
import gradio as gr
from rembg import remove
from PIL import Image
import uuid
import os
# Cartella output
OUTPUT_DIR = "outputs"
os.makedirs(OUTPUT_DIR, exist_ok=True)
# Funzione per la rimozione dello sfondo
def remove_background(image: Image.Image):
if image is None:
return None, None
output = remove(image)
file_id = str(uuid.uuid4())
output_path = os.path.join(OUTPUT_DIR, f"{file_id}.png")
output.save(output_path)
return output, output_path
# Carica le immagini dalla cartella gallery
GALLERY_DIR = "gallery"
gallery_files = sorted([
os.path.join(GALLERY_DIR, f)
for f in os.listdir(GALLERY_DIR)
if f.lower().endswith((".png", ".jpg", ".jpeg"))
])
# Seleziona un'immagine dalla galleria
def load_gallery_image(evt: gr.SelectData):
if evt.index < len(gallery_files):
image_path = gallery_files[evt.index]
return Image.open(image_path)
return None
# Interfaccia di gradio con i css per il bottone
with gr.Blocks(title="Rimozione Sfondo") as demo:
demo.css = """
#orange-button {
background-color: orange !important;
color: white !important;
}
"""
gr.Markdown("# Rimuovi lo sfondo dalla tua immagine")
gr.Markdown("Carica un'immagine personale, cattura un'immagine dalla tua webcam o scegline una dalla galleria.")
with gr.Row():
with gr.Column():
image_input = gr.Image(label="Carica un'immagine", type="pil", sources=["upload", "webcam"])
btn = gr.Button("Rimuovi lo Sfondo", elem_id="orange-button")
gallery = gr.Gallery(label="Galleria immagini", value=gallery_files, columns=5, rows=1, height="auto")
output_image = gr.Image(type="pil", label="Risultato")
output_file = gr.File(label="Scarica il file")
gallery.select(fn=load_gallery_image, outputs=image_input)
btn.click(fn=remove_background, inputs=image_input, outputs=[output_image, output_file])
if __name__ == "__main__":
demo.launch()