File size: 1,955 Bytes
1a2e6c6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
62
import streamlit as st
from PIL import Image, ImageFilter, ImageEnhance
import numpy as np
import io

def apply_filter(image, filter_type):
    if filter_type == "Grayscale":
        return image.convert("L")
    elif filter_type == "Blur":
        return image.filter(ImageFilter.BLUR)
    elif filter_type == "Contour":
        return image.filter(ImageFilter.CONTOUR)
    elif filter_type == "Edge Enhance":
        return image.filter(ImageFilter.EDGE_ENHANCE)
    elif filter_type == "Sharpen":
        return image.filter(ImageFilter.SHARPEN)
    else:
        return image

def main():
    st.title("Image Editor")

    st.sidebar.title("Editor Options")
    filter_option = st.sidebar.selectbox("Choose a filter:", [
        "None", "Grayscale", "Blur", "Contour", "Edge Enhance", "Sharpen"
    ])

    brightness = st.sidebar.slider("Adjust Brightness", 0.5, 3.0, 1.0)
    contrast = st.sidebar.slider("Adjust Contrast", 0.5, 3.0, 1.0)

    uploaded_file = st.file_uploader("Upload an image", type=["jpg", "jpeg", "png"])

    if uploaded_file is not None:
        image = Image.open(uploaded_file)
        st.image(image, caption="Uploaded Image", use_column_width=True)

        # Apply filter
        edited_image = apply_filter(image, filter_option)

        # Adjust brightness and contrast
        enhancer = ImageEnhance.Brightness(edited_image)
        edited_image = enhancer.enhance(brightness)
        enhancer = ImageEnhance.Contrast(edited_image)
        edited_image = enhancer.enhance(contrast)

        st.image(edited_image, caption="Edited Image", use_column_width=True)

        # Download edited image
        buf = io.BytesIO()
        edited_image.save(buf, format="PNG")
        byte_im = buf.getvalue()

        st.download_button(
            label="Download Edited Image",
            data=byte_im,
            file_name="edited_image.png",
            mime="image/png",
        )

if __name__ == "__main__":
    main()