File size: 2,131 Bytes
a8b1bdc
6fef7de
a8b1bdc
88bb9ec
a8b1bdc
 
6fef7de
 
 
a8b1bdc
 
 
6fef7de
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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!**
    """
)