| 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: |
| 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 |