| from PIL import Image | |
| import io | |
| import logging | |
| from datetime import datetime | |
| logger = logging.getLogger(__name__) | |
| def remove_background(image_data): | |
| start_time = datetime.now() | |
| logger.info(f"Removing background - {start_time}") | |
| try: | |
| # Try to import rembg | |
| try: | |
| from rembg import remove | |
| logger.info("rembg module imported successfully") | |
| except ImportError: | |
| logger.error("rembg module not found!") | |
| raise ImportError('rembg library not installed') | |
| input_image = Image.open(io.BytesIO(image_data)) | |
| logger.info(f"Image opened. Mode: {input_image.mode}, Size: {input_image.size}") | |
| if input_image.mode != 'RGB': | |
| logger.info("Converting image to RGB...") | |
| input_image = input_image.convert('RGB') | |
| logger.info("Removing background...") | |
| output_image = remove(input_image) | |
| img_io = io.BytesIO() | |
| output_image.save(img_io, 'PNG') | |
| img_io.seek(0) | |
| duration = (datetime.now() - start_time).total_seconds() | |
| logger.info(f"Successfully processed. Duration: {duration} seconds") | |
| return img_io | |
| except Exception as e: | |
| logger.error(f"Background removal error: {str(e)}", exc_info=True) | |
| raise |