Fanu2 commited on
Commit
1bb3759
·
1 Parent(s): ea4b3d9

Add Gradio app and dependencies

Browse files
Files changed (2) hide show
  1. app.py +70 -0
  2. requirements.txt +3 -0
app.py ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from PIL import Image, ImageOps, ImageFilter, ImageEnhance
3
+ import io
4
+
5
+ def apply_operation(img, operation, factor=1.0):
6
+ if img is None:
7
+ return None
8
+
9
+ pil_img = Image.fromarray(img)
10
+
11
+ if operation == "rotate_left":
12
+ pil_img = pil_img.rotate(90, expand=True)
13
+ elif operation == "rotate_right":
14
+ pil_img = pil_img.rotate(-90, expand=True)
15
+ elif operation == "flip_horizontal":
16
+ pil_img = ImageOps.mirror(pil_img)
17
+ elif operation == "flip_vertical":
18
+ pil_img = ImageOps.flip(pil_img)
19
+ elif operation == "grayscale":
20
+ pil_img = ImageOps.grayscale(pil_img)
21
+ elif operation == "blur":
22
+ pil_img = pil_img.filter(ImageFilter.GaussianBlur(radius=factor))
23
+ elif operation == "brightness":
24
+ enhancer = ImageEnhance.Brightness(pil_img)
25
+ pil_img = enhancer.enhance(factor)
26
+ elif operation == "sharpen":
27
+ enhancer = ImageEnhance.Sharpness(pil_img)
28
+ pil_img = enhancer.enhance(factor)
29
+ elif operation == "invert":
30
+ pil_img = ImageOps.invert(pil_img.convert("RGB"))
31
+ return pil_img
32
+
33
+ with gr.Blocks() as demo:
34
+ gr.Markdown("# Simple Image Editor")
35
+ image_input = gr.Image(label="Upload Image", type="numpy")
36
+ output_img = gr.Image(label="Edited Image")
37
+
38
+ with gr.Row():
39
+ btn_rotate_left = gr.Button("Rotate Left ⟲")
40
+ btn_rotate_right = gr.Button("Rotate Right ⟳")
41
+ btn_flip_h = gr.Button("Flip Horizontal ↔")
42
+ btn_flip_v = gr.Button("Flip Vertical ↕")
43
+ btn_grayscale = gr.Button("Grayscale")
44
+ btn_invert = gr.Button("Invert Colors")
45
+
46
+ with gr.Row():
47
+ btn_blur = gr.Button("Blur")
48
+ blur_slider = gr.Slider(0, 10, value=2, label="Blur Radius")
49
+
50
+ btn_brightness = gr.Button("Brightness")
51
+ brightness_slider = gr.Slider(0.1, 3.0, value=1.0, step=0.1, label="Brightness Factor")
52
+
53
+ btn_sharpen = gr.Button("Sharpen")
54
+ sharpen_slider = gr.Slider(0, 5, value=1, step=0.1, label="Sharpen Factor")
55
+
56
+ def update_image(img, operation, factor=1.0):
57
+ return apply_operation(img, operation, factor)
58
+
59
+ btn_rotate_left.click(update_image, inputs=[image_input, gr.State("rotate_left")], outputs=output_img)
60
+ btn_rotate_right.click(update_image, inputs=[image_input, gr.State("rotate_right")], outputs=output_img)
61
+ btn_flip_h.click(update_image, inputs=[image_input, gr.State("flip_horizontal")], outputs=output_img)
62
+ btn_flip_v.click(update_image, inputs=[image_input, gr.State("flip_vertical")], outputs=output_img)
63
+ btn_grayscale.click(update_image, inputs=[image_input, gr.State("grayscale")], outputs=output_img)
64
+ btn_invert.click(update_image, inputs=[image_input, gr.State("invert")], outputs=output_img)
65
+
66
+ btn_blur.click(update_image, inputs=[image_input, gr.State("blur"), blur_slider], outputs=output_img)
67
+ btn_brightness.click(update_image, inputs=[image_input, gr.State("brightness"), brightness_slider], outputs=output_img)
68
+ btn_sharpen.click(update_image, inputs=[image_input, gr.State("sharpen"), sharpen_slider], outputs=output_img)
69
+
70
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ gradio
2
+ Pillow
3
+