Spaces:
Sleeping
Sleeping
| import sys | |
| import types | |
| import warnings | |
| # Suppress specific timm warning | |
| warnings.filterwarnings("ignore", category=FutureWarning, module="timm.models.layers") | |
| # Monkey-patch torch.classes path issue | |
| if not hasattr(sys.modules.get("torch"), "__path__"): | |
| torch_classes = types.SimpleNamespace(_path=[]) | |
| sys.modules["torch.classes"] = torch_classes | |
| import streamlit as st | |
| import cv2 | |
| import numpy as np | |
| from io import BytesIO | |
| from PIL import Image | |
| from transparent_background import Remover | |
| def process_image(image): | |
| try: | |
| remover = Remover() | |
| img = Image.open(image).convert("RGB") | |
| with st.spinner("Processing image..."): | |
| out = remover.process(img, type="rgba") | |
| return out # `out` is already a PIL Image | |
| except Exception as e: | |
| st.error(f"An error occurred: {str(e)}") | |
| return None | |
| def main(): | |
| st.title("Image Upload and Processing App") | |
| uploaded_file = st.file_uploader("Upload an image", type=["jpg", "jpeg", "png", "tif", "tiff"]) | |
| if uploaded_file is not None: | |
| try: | |
| image = Image.open(uploaded_file) | |
| # Convert unsupported image modes | |
| if image.mode == 'I;16': | |
| image = image.point(lambda i: i * (1.0 / 256)).convert('RGB') | |
| st.image(image, caption="Uploaded Image", use_container_width=True) | |
| processed_pil = process_image(uploaded_file) | |
| if processed_pil: | |
| st.image(processed_pil, caption="Processed Image", use_container_width=True) | |
| buf = BytesIO() | |
| processed_pil.save(buf, format="PNG") | |
| byte_im = buf.getvalue() | |
| st.download_button( | |
| label="Download Processed Image", | |
| data=byte_im, | |
| file_name="processed_image.png", | |
| mime="image/png" | |
| ) | |
| except Exception as e: | |
| st.error(f"Error loading image: {e}") | |
| if __name__ == "__main__": | |
| main() | |