Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from PIL import Image, ImageEnhance | |
| def main(): | |
| st.title("Interactive Image Editor") | |
| st.sidebar.header("Features") | |
| uploaded_file = st.sidebar.file_uploader("Upload an Image", type=["jpg", "jpeg", "png"]) | |
| if uploaded_file: | |
| # Load the image | |
| image = Image.open(uploaded_file) | |
| edited_image = image.copy() | |
| st.subheader("Original Image") | |
| st.image(image, caption="Uploaded Image", use_column_width=True) | |
| # Adjustment Tools | |
| st.sidebar.subheader("Adjustments") | |
| # Grayscale | |
| grayscale = st.sidebar.checkbox("Apply Grayscale") | |
| # Brightness Adjustment | |
| brightness = st.sidebar.slider("Adjust Brightness", 0.5, 2.0, 1.0, 0.1) | |
| # Color Enhancement | |
| color = st.sidebar.slider("Adjust Color Intensity", 0.5, 2.0, 1.0, 0.1) | |
| # Rotate | |
| rotate_angle = st.sidebar.slider("Rotate Image (Degrees)", 0, 360, 0, 15) | |
| # Crop Tool | |
| st.sidebar.subheader("Crop Tool") | |
| crop_active = st.sidebar.checkbox("Enable Cropping") | |
| if crop_active: | |
| st.sidebar.text("Select Crop Bounds:") | |
| crop_left = st.sidebar.slider("Left", 0, image.width, 0) | |
| crop_top = st.sidebar.slider("Top", 0, image.height, 0) | |
| crop_right = st.sidebar.slider("Right", 0, image.width, image.width) | |
| crop_bottom = st.sidebar.slider("Bottom", 0, image.height, image.height) | |
| # Flip Options | |
| st.sidebar.subheader("Flip") | |
| flip_horizontal = st.sidebar.checkbox("Flip Horizontally") | |
| flip_vertical = st.sidebar.checkbox("Flip Vertically") | |
| # Apply Filters | |
| if grayscale: | |
| edited_image = edited_image.convert("L") | |
| if brightness != 1.0: | |
| if edited_image.mode != "RGB": | |
| edited_image = edited_image.convert("RGB") | |
| enhancer = ImageEnhance.Brightness(edited_image) | |
| edited_image = enhancer.enhance(brightness) | |
| if color != 1.0: | |
| if edited_image.mode != "RGB": | |
| edited_image = edited_image.convert("RGB") | |
| enhancer = ImageEnhance.Color(edited_image) | |
| edited_image = enhancer.enhance(color) | |
| if rotate_angle != 0: | |
| edited_image = edited_image.rotate(rotate_angle) | |
| if crop_active and crop_left < crop_right and crop_top < crop_bottom: | |
| edited_image = edited_image.crop((crop_left, crop_top, crop_right, crop_bottom)) | |
| if flip_horizontal: | |
| edited_image = edited_image.transpose(Image.FLIP_LEFT_RIGHT) | |
| if flip_vertical: | |
| edited_image = edited_image.transpose(Image.FLIP_TOP_BOTTOM) | |
| # Display the edited image | |
| st.subheader("Edited Image") | |
| st.image(edited_image, caption="Preview of Edited Image", use_column_width=True) | |
| # Download button | |
| st.sidebar.subheader("Download") | |
| if st.sidebar.button("Download Image"): | |
| edited_image.save("edited_image.png") | |
| with open("edited_image.png", "rb") as file: | |
| st.download_button("Download Edited Image", file, file_name="edited_image.png", mime="image/png") | |
| if __name__ == "__main__": | |
| main() | |