import streamlit as st import cv2 from PIL import Image, ImageEnhance import numpy as np # Add this line # Function to apply grayscale filter def grayscale(image): gray_img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) return gray_img # Function to adjust brightness def adjust_brightness(image, factor): pil_img = Image.fromarray(image) enhancer = ImageEnhance.Brightness(pil_img) enhanced_img = enhancer.enhance(factor) return cv2.cvtColor(np.array(enhanced_img), cv2.COLOR_RGB2BGR) # Load image from uploaded file def load_image(uploaded_file): img = cv2.imdecode(np.fromstring(uploaded_file.read(), np.uint8), cv2.IMREAD_COLOR) return img st.title("Image Editor") st.subheader("Enhance your images with simple filters!") # Upload image uploaded_file = st.file_uploader("Choose an image:", type=["jpg", "jpeg", "png"]) if uploaded_file is not None: image = load_image(uploaded_file) st.image(image, channels="BGR") # Display original image # Filter selection filter_options = {"Original": image, "Grayscale": grayscale(image.copy())} selected_filter = st.selectbox("Select a filter:", list(filter_options.keys())) filtered_image = filter_options[selected_filter] # Brightness adjustment slider (optional) brightness_factor = st.slider("Adjust Brightness", 0.5, 2.0, step=0.1, value=1.0) adjusted_image = adjust_brightness(filtered_image.copy(), brightness_factor) # Display edited image st.image(adjusted_image, channels="BGR") # Download button if st.button("Download Edited Image"): with open("edited_image.jpg", "wb") as f: cv2.imwrite("edited_image.jpg", adjusted_image) f.write(open("edited_image.jpg", "rb").read()) st.success("Image downloaded successfully!") st.sidebar.markdown( """ **About this App:** This is a simple image editor built with Streamlit and deployed on Hugging Face. It allows you to upload images, apply grayscale filter (and optionally adjust brightness), and download the edited version. **Feel free to explore and enhance your images!** """ )