Prathamesh1420 commited on
Commit
4bd3655
·
verified ·
1 Parent(s): 4fef606

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +100 -88
app.py CHANGED
@@ -7,7 +7,7 @@ st.set_page_config(page_title="Image Transformer", page_icon="🖼️", layout="
7
 
8
  # Sidebar for navigation and options
9
  st.sidebar.title("Transformation Options")
10
- operation = st.sidebar.selectbox(
11
  "Choose an operation to perform:",
12
  ("Mirror", "Resize", "Crop", "Rotate", "Black/White", "Pixelate", "Compress")
13
  )
@@ -22,91 +22,103 @@ uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "png", "jpeg
22
  if uploaded_file is not None:
23
  # Load the image
24
  image = Image.open(uploaded_file)
25
-
 
 
 
26
  # Show the original image (smaller size)
27
- st.image(image, caption="Original Image", use_column_width=False, width=250)
28
-
29
- # Apply transformations based on the selected operation
30
- if operation == "Mirror":
31
- st.header("Mirror Image")
32
- if st.button("Apply Mirror"):
33
- mirrored_image = ImageOps.mirror(image)
34
- st.image(mirrored_image, caption="Mirrored Image", use_column_width=False, width=250)
35
-
36
- # Download button for mirrored image
37
- buffered = io.BytesIO()
38
- mirrored_image.save(buffered, format="PNG")
39
- st.download_button("Download Image", data=buffered.getvalue(), file_name="mirrored_image.png", mime="image/png")
40
-
41
- elif operation == "Resize":
42
- st.header("Resize Image")
43
- new_width = st.slider("Resize Image - Width", 50, 500, 100)
44
- new_height = st.slider("Resize Image - Height", 50, 500, 100)
45
- if st.button("Apply Resize"):
46
- resized_image = image.resize((new_width, new_height))
47
- st.image(resized_image, caption="Resized Image", use_column_width=False, width=250)
48
-
49
- # Download button for resized image
50
- buffered = io.BytesIO()
51
- resized_image.save(buffered, format="PNG")
52
- st.download_button("Download Image", data=buffered.getvalue(), file_name="resized_image.png", mime="image/png")
53
-
54
- elif operation == "Crop":
55
- st.header("Crop Image")
56
- crop_values = st.slider("Crop Image - (left, upper, right, lower)", 0, 100, (10, 10, 90, 90))
57
- if st.button("Apply Crop"):
58
- cropped_image = image.crop(crop_values)
59
- st.image(cropped_image, caption="Cropped Image", use_column_width=False, width=250)
60
-
61
- # Download button for cropped image
62
- buffered = io.BytesIO()
63
- cropped_image.save(buffered, format="PNG")
64
- st.download_button("Download Image", data=buffered.getvalue(), file_name="cropped_image.png", mime="image/png")
65
-
66
- elif operation == "Rotate":
67
- st.header("Rotate Image")
68
- angle = st.slider("Rotate Image", 0, 360, 0)
69
- if st.button("Apply Rotate"):
70
- rotated_image = image.rotate(angle)
71
- st.image(rotated_image, caption="Rotated Image", use_column_width=False, width=250)
72
-
73
- # Download button for rotated image
74
- buffered = io.BytesIO()
75
- rotated_image.save(buffered, format="PNG")
76
- st.download_button("Download Image", data=buffered.getvalue(), file_name="rotated_image.png", mime="image/png")
77
-
78
- elif operation == "Black/White":
79
- st.header("Convert to Black/White")
80
- if st.button("Apply Black/White"):
81
- bw_image = image.convert("L")
82
- st.image(bw_image, caption="Black & White Image", use_column_width=False, width=250)
83
-
84
- # Download button for black-and-white image
85
- buffered = io.BytesIO()
86
- bw_image.save(buffered, format="PNG")
87
- st.download_button("Download Image", data=buffered.getvalue(), file_name="bw_image.png", mime="image/png")
88
-
89
- elif operation == "Pixelate":
90
- st.header("Pixelate Image")
91
- pixel_size = st.slider("Pixelate Image", 1, 20, 10)
92
- if st.button("Apply Pixelate"):
93
- small = image.resize((image.width // pixel_size, image.height // pixel_size), Image.NEAREST)
94
- pixelated_image = small.resize((image.width, image.height), Image.NEAREST)
95
- st.image(pixelated_image, caption="Pixelated Image", use_column_width=False, width=250)
96
-
97
- # Download button for pixelated image
98
- buffered = io.BytesIO()
99
- pixelated_image.save(buffered, format="PNG")
100
- st.download_button("Download Image", data=buffered.getvalue(), file_name="pixelated_image.png", mime="image/png")
101
-
102
- elif operation == "Compress":
103
- st.header("Compress Image")
104
- quality = st.slider("Compress Image (Quality)", 10, 100, 80)
105
- if st.button("Apply Compress"):
106
- compressed_image = image.copy()
107
- st.image(compressed_image, caption=f"Compressed Image (Quality: {quality})", use_column_width=False, width=250)
108
-
109
- # Download button for compressed image
110
- buffered = io.BytesIO()
111
- compressed_image.save(buffered, format="PNG")
112
- st.download_button("Download Image", data=buffered.getvalue(), file_name="compressed_image.png", mime="image/png")
 
 
 
 
 
 
 
 
 
 
7
 
8
  # Sidebar for navigation and options
9
  st.sidebar.title("Transformation Options")
10
+ operation = st.sidebar.radio(
11
  "Choose an operation to perform:",
12
  ("Mirror", "Resize", "Crop", "Rotate", "Black/White", "Pixelate", "Compress")
13
  )
 
22
  if uploaded_file is not None:
23
  # Load the image
24
  image = Image.open(uploaded_file)
25
+
26
+ # Create two columns for displaying images
27
+ col1, col2 = st.columns(2)
28
+
29
  # Show the original image (smaller size)
30
+ with col1:
31
+ st.image(image, caption="Original Image", use_column_width=False, width=250)
32
+
33
+ # Apply transformations and show the result in the right column
34
+ with col2:
35
+ # Mirror Operation
36
+ if operation == "Mirror":
37
+ st.header("Mirrored Image")
38
+ if st.button("Apply Mirror"):
39
+ mirrored_image = ImageOps.mirror(image)
40
+ st.image(mirrored_image, caption="Mirrored Image", use_column_width=False, width=250)
41
+
42
+ # Download button for mirrored image
43
+ buffered = io.BytesIO()
44
+ mirrored_image.save(buffered, format="PNG")
45
+ st.download_button("Download Image", data=buffered.getvalue(), file_name="mirrored_image.png", mime="image/png")
46
+
47
+ # Resize Operation
48
+ elif operation == "Resize":
49
+ st.header("Resized Image")
50
+ new_width = st.slider("Resize Image - Width", 50, 500, 100)
51
+ new_height = st.slider("Resize Image - Height", 50, 500, 100)
52
+ if st.button("Apply Resize"):
53
+ resized_image = image.resize((new_width, new_height))
54
+ st.image(resized_image, caption="Resized Image", use_column_width=False, width=250)
55
+
56
+ # Download button for resized image
57
+ buffered = io.BytesIO()
58
+ resized_image.save(buffered, format="PNG")
59
+ st.download_button("Download Image", data=buffered.getvalue(), file_name="resized_image.png", mime="image/png")
60
+
61
+ # Crop Operation
62
+ elif operation == "Crop":
63
+ st.header("Cropped Image")
64
+ crop_values = st.slider("Crop Image - (left, upper, right, lower)", 0, 100, (10, 10, 90, 90))
65
+ if st.button("Apply Crop"):
66
+ cropped_image = image.crop(crop_values)
67
+ st.image(cropped_image, caption="Cropped Image", use_column_width=False, width=250)
68
+
69
+ # Download button for cropped image
70
+ buffered = io.BytesIO()
71
+ cropped_image.save(buffered, format="PNG")
72
+ st.download_button("Download Image", data=buffered.getvalue(), file_name="cropped_image.png", mime="image/png")
73
+
74
+ # Rotate Operation
75
+ elif operation == "Rotate":
76
+ st.header("Rotated Image")
77
+ angle = st.slider("Rotate Image", 0, 360, 0)
78
+ if st.button("Apply Rotate"):
79
+ rotated_image = image.rotate(angle)
80
+ st.image(rotated_image, caption="Rotated Image", use_column_width=False, width=250)
81
+
82
+ # Download button for rotated image
83
+ buffered = io.BytesIO()
84
+ rotated_image.save(buffered, format="PNG")
85
+ st.download_button("Download Image", data=buffered.getvalue(), file_name="rotated_image.png", mime="image/png")
86
+
87
+ # Black/White Operation
88
+ elif operation == "Black/White":
89
+ st.header("Black & White Image")
90
+ if st.button("Apply Black/White"):
91
+ bw_image = image.convert("L")
92
+ st.image(bw_image, caption="Black & White Image", use_column_width=False, width=250)
93
+
94
+ # Download button for black-and-white image
95
+ buffered = io.BytesIO()
96
+ bw_image.save(buffered, format="PNG")
97
+ st.download_button("Download Image", data=buffered.getvalue(), file_name="bw_image.png", mime="image/png")
98
+
99
+ # Pixelate Operation
100
+ elif operation == "Pixelate":
101
+ st.header("Pixelated Image")
102
+ pixel_size = st.slider("Pixelate Image", 1, 20, 10)
103
+ if st.button("Apply Pixelate"):
104
+ small = image.resize((image.width // pixel_size, image.height // pixel_size), Image.NEAREST)
105
+ pixelated_image = small.resize((image.width, image.height), Image.NEAREST)
106
+ st.image(pixelated_image, caption="Pixelated Image", use_column_width=False, width=250)
107
+
108
+ # Download button for pixelated image
109
+ buffered = io.BytesIO()
110
+ pixelated_image.save(buffered, format="PNG")
111
+ st.download_button("Download Image", data=buffered.getvalue(), file_name="pixelated_image.png", mime="image/png")
112
+
113
+ # Compress Operation
114
+ elif operation == "Compress":
115
+ st.header("Compressed Image")
116
+ quality = st.slider("Compress Image (Quality)", 10, 100, 80)
117
+ if st.button("Apply Compress"):
118
+ compressed_image = image.copy()
119
+ st.image(compressed_image, caption=f"Compressed Image (Quality: {quality})", use_column_width=False, width=250)
120
+
121
+ # Download button for compressed image
122
+ buffered = io.BytesIO()
123
+ compressed_image.save(buffered, format="PNG")
124
+ st.download_button("Download Image", data=buffered.getvalue(), file_name="compressed_image.png", mime="image/png")