Image-Enhancer / app.py
Muhammad-Faizan-Ahmed's picture
Update app.py
816e982 verified
import streamlit as st
from PIL import Image, ImageEnhance, ImageOps
from io import BytesIO
# App title and description
st.set_page_config(page_title="Image Editor", page_icon="🎨", layout="wide")
st.title("🎨 Image Editor")
st.write("Easily upload, enhance, and download your images with a variety of filters and adjustments.")
# Sidebar for navigation
st.sidebar.header("πŸŽ›οΈ Image Editing Options")
# File upload
uploaded_file = st.sidebar.file_uploader("πŸ“€ Upload an Image", type=["png", "jpg", "jpeg"])
if uploaded_file:
# Display original image
col1, col2 = st.columns(2)
with col1:
st.header("Original Image")
image = Image.open(uploaded_file)
st.image(image, use_container_width=True)
# Editing options
with col2:
st.header("Edited Image")
edited_image = image.copy()
# Grayscale
if st.sidebar.checkbox("πŸ”³ Convert to Grayscale"):
edited_image = ImageOps.grayscale(edited_image)
# Brightness
brightness = st.sidebar.slider("πŸ’‘ Brightness", 0.5, 2.0, 1.0)
enhancer = ImageEnhance.Brightness(edited_image)
edited_image = enhancer.enhance(brightness)
# Contrast
contrast = st.sidebar.slider("🎚️ Contrast", 0.5, 2.0, 1.0)
enhancer = ImageEnhance.Contrast(edited_image)
edited_image = enhancer.enhance(contrast)
# Sharpness
sharpness = st.sidebar.slider("πŸ”ͺ Sharpness", 0.5, 3.0, 1.0)
enhancer = ImageEnhance.Sharpness(edited_image)
edited_image = enhancer.enhance(sharpness)
# Add border
if st.sidebar.checkbox("πŸ–ΌοΈ Add Border"):
border_size = st.sidebar.slider("Border Size", 1, 50, 10)
border_color = st.sidebar.color_picker("Border Color", "#000000")
edited_image = ImageOps.expand(edited_image, border=border_size, fill=border_color)
# Display edited image
st.image(edited_image, use_container_width=True)
# Download button
buf = 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",
)
else:
st.info("πŸ‘ˆ Upload an image to get started!")