aika42 commited on
Commit
aa90ae8
Β·
verified Β·
1 Parent(s): 7b68fc6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -22
app.py CHANGED
@@ -3,40 +3,51 @@ import streamlit as st
3
  from PIL import Image, ImageOps
4
  import io
5
 
6
- st.set_page_config(page_title="Image Filter App", layout="centered")
7
 
8
- st.title("πŸ–ΌοΈ Simple Image Filter App")
9
- st.write("Upload a PNG or JPG image under 5MB to apply filters.")
10
- st.caption("πŸ“¦ Only PNG or JPG under 5MB allowed.")
11
 
 
 
12
 
13
- # File uploader with type restriction
14
- uploaded_file = st.file_uploader("Upload Image", type=["png", "jpg", "jpeg"])
 
 
 
 
 
 
15
 
16
  if uploaded_file:
17
- # Check file size
18
  uploaded_file.seek(0, io.SEEK_END)
19
  file_size = uploaded_file.tell()
20
- uploaded_file.seek(0) # Reset pointer
21
 
22
  if file_size > 5 * 1024 * 1024:
23
- st.error("❌ File size exceeds 5MB. Please upload a smaller image.")
 
24
  else:
25
  image = Image.open(uploaded_file)
26
- st.image(image, caption="Original Image", use_container_width=True)
27
 
28
- st.subheader("Choose a Filter")
29
- filter_option = st.radio("Select filter:", ["None", "Grayscale", "Invert Colors"])
 
 
 
 
 
 
 
 
30
 
31
- if filter_option == "Grayscale":
32
- filtered_image = ImageOps.grayscale(image)
33
- st.image(filtered_image, caption="Grayscale Image", use_container_width=True)
 
 
34
 
35
- elif filter_option == "Invert Colors":
36
- if image.mode != "RGB":
37
- image = image.convert("RGB")
38
- filtered_image = ImageOps.invert(image)
39
- st.image(filtered_image, caption="Inverted Image", use_container_width=True)
40
 
41
- elif filter_option == "None":
42
- st.info("Select a filter to apply to the image.")
 
3
  from PIL import Image, ImageOps
4
  import io
5
 
6
+ st.set_page_config(page_title="Image Filter App", layout="wide")
7
 
8
+ st.title("πŸ–ΌοΈ Image Filter App")
 
 
9
 
10
+ # 3-column layout
11
+ col1, col2, col3 = st.columns([1, 1, 1]) # equal width
12
 
13
+ with col1:
14
+ st.header("πŸ“€ Upload Image")
15
+ st.caption("Max 5MB β€’ Only PNG, JPG")
16
+ uploaded_file = st.file_uploader("Choose an image", type=["png", "jpg", "jpeg"])
17
+
18
+ image = None
19
+ filtered_image = None
20
+ filter_option = "None"
21
 
22
  if uploaded_file:
23
+ # Size check
24
  uploaded_file.seek(0, io.SEEK_END)
25
  file_size = uploaded_file.tell()
26
+ uploaded_file.seek(0)
27
 
28
  if file_size > 5 * 1024 * 1024:
29
+ with col1:
30
+ st.error("❌ File too large! Must be under 5MB.")
31
  else:
32
  image = Image.open(uploaded_file)
 
33
 
34
+ with col2:
35
+ st.header("πŸŽ›οΈ Select Filter")
36
+ filter_option = st.radio("Choose filter:", ["None", "Grayscale", "Invert Colors"])
37
+
38
+ with col3:
39
+ st.header("πŸ” Preview Output")
40
+
41
+ if filter_option == "Grayscale":
42
+ filtered_image = ImageOps.grayscale(image)
43
+ st.image(filtered_image, caption="Grayscale", use_container_width=True)
44
 
45
+ elif filter_option == "Invert Colors":
46
+ if image.mode != "RGB":
47
+ image = image.convert("RGB")
48
+ filtered_image = ImageOps.invert(image)
49
+ st.image(filtered_image, caption="Inverted", use_container_width=True)
50
 
51
+ else:
52
+ st.info("Select a filter to see output.")
 
 
 
53