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()