Spaces:
Sleeping
Sleeping
# app.py | |
import streamlit as st | |
from PIL import Image, ImageOps | |
import io | |
st.set_page_config(page_title="Image Filter App", layout="centered") | |
st.title("πΌοΈ Simple Image Filter App") | |
st.write("Upload a PNG or JPG image under 5MB to apply filters.") | |
st.caption("π¦ Only PNG or JPG under 5MB allowed.") | |
# File uploader with type restriction | |
uploaded_file = st.file_uploader("Upload Image", type=["png", "jpg", "jpeg"]) | |
if uploaded_file: | |
# Check file size | |
uploaded_file.seek(0, io.SEEK_END) | |
file_size = uploaded_file.tell() | |
uploaded_file.seek(0) # Reset pointer | |
if file_size > 5 * 1024 * 1024: | |
st.error("β File size exceeds 5MB. Please upload a smaller image.") | |
else: | |
image = Image.open(uploaded_file) | |
st.image(image, caption="Original Image", use_container_width=True) | |
st.subheader("Choose a Filter") | |
filter_option = st.radio("Select filter:", ["None", "Grayscale", "Invert Colors"]) | |
if filter_option == "Grayscale": | |
filtered_image = ImageOps.grayscale(image) | |
st.image(filtered_image, caption="Grayscale Image", use_container_width=True) | |
elif filter_option == "Invert Colors": | |
if image.mode != "RGB": | |
image = image.convert("RGB") | |
filtered_image = ImageOps.invert(image) | |
st.image(filtered_image, caption="Inverted Image", use_container_width=True) | |
elif filter_option == "None": | |
st.info("Select a filter to apply to the image.") | |