Spaces:
Runtime error
Runtime error
from rembg import remove | |
import gradio as gr | |
from PIL import Image | |
from zipfile import ZipFile | |
import os | |
def crop_and_resize(img, size, proportion): | |
frac = proportion | |
left = img.size[0]*((1-frac)/2) | |
upper = img.size[1]*((1-frac)/2) | |
right = img.size[0]-((1-frac)/2)*img.size[0] | |
bottom = img.size[1]-((1-frac)/2)*img.size[1] | |
cropped_img = img.crop((left, upper, right, bottom)) | |
newsize = (size, size) | |
cropped_img = cropped_img.resize(newsize) | |
return cropped_img | |
def remove_bg(folder, size, proportion): | |
if os.path.exists("images_no_bg.zip"): | |
os.remove("images_no_bg.zip") | |
else: | |
print("The file does not exist") | |
with ZipFile("images_no_bg.zip", "w") as zipObj: | |
for i, file in enumerate(folder): | |
image = Image.open(file) | |
image = remove(image) | |
image = crop_and_resize(image, size, proportion) | |
image_name = f"image_{i}.png" | |
image.save(image_name) | |
zipObj.write(image_name, image_name) | |
os.remove(image_name) | |
return "images_no_bg.zip" | |
interface = gr.Interface( | |
title = "Batch Image Background Remover", | |
description = "Select a folder with images. Then, select the size of output image (square), and the cropping proportion.", | |
allow_flagging="never", | |
fn = remove_bg, | |
inputs = [ | |
gr.File(file_count="directory"), | |
gr.Slider(400, 800, step = 100, value=600, label = "Size (Square)"), | |
gr.Slider(0, 1, value=.7, step = .1, label = "Croping Proportion", precision = None), | |
], | |
outputs = "file" | |
) | |
interface.launch(share = False) |