Spaces:
Runtime error
Runtime error
Download autoexpress/modules/background_remover.py from damientheodore/AutoExpress: direct link, hf CLI and curl.
- Browser
- Download file 2.03 kB
-
https://huggingface.co/spaces/damientheodore/AutoExpress/resolve/main/autoexpress/modules/background_remover.py
- Command line
-
hf download hf://spaces/damientheodore/AutoExpress/autoexpress/modules/background_remover.py
-
curl -L -o background_remover.py https://huggingface.co/spaces/damientheodore/AutoExpress/resolve/main/autoexpress/modules/background_remover.py
2.03 kB
| from rembg import remove | |
| from PIL import Image, ImageFilter | |
| from pathlib import Path | |
| import io | |
| from glob import glob | |
| from loguru import logger as log | |
| global files_processed | |
| files_processed = None | |
| def get_files_processed(): | |
| return files_processed | |
| def remove_background_and_feather(input_path, output_path, feather_radius=4): | |
| # Read the image | |
| with open(input_path, "rb") as file: | |
| input_image = file.read() | |
| # Remove the background | |
| output_image = remove(input_image) | |
| # Convert the result to a PIL image | |
| img_with_transparency = Image.open(io.BytesIO(output_image)) | |
| # Apply feather (Gaussian Blur) to the alpha channel | |
| alpha = img_with_transparency.getchannel("A") | |
| alpha_feathered = alpha.filter(ImageFilter.GaussianBlur(feather_radius)) | |
| img_with_transparency.putalpha(alpha_feathered) | |
| # Save the final image | |
| img_with_transparency.save(output_path, "PNG") | |
| def batch_process_images(input_dir, output_dir): | |
| input_dir_path = Path(input_dir) | |
| output_dir_path = Path(output_dir) | |
| output_dir_path.mkdir(exist_ok=True) | |
| global files_processed | |
| # Process each image in the input directory | |
| images = list(input_dir_path.glob("*.png")) + list(input_dir_path.glob("*.jpg")) | |
| if images: | |
| log.info("Found the following images: ", [img.stem for img in images]) | |
| files_processed = len(images) | |
| for image_path in images: | |
| output_image_path = output_dir_path / image_path.name | |
| log.info(f"Processing {image_path}...") | |
| remove_background_and_feather(image_path, output_image_path) | |
| log.info(f"Saved to {output_image_path}") | |
| return files_processed | |
| else: | |
| log.info("No Images in this Directory") | |
| return None | |
| def main(): | |
| input_path = input("Enter the directory your images are in: ") | |
| output_path = input("Output Directory: ") | |
| batch_process_images(input_path, output_path) | |
| # Usage: Specify your input and output directories | |
| if __name__ == "__main__": | |
| main() |