File size: 2,171 Bytes
408242e
d65a8bc
ba0a843
d65a8bc
ba0a843
 
 
 
 
 
 
d65a8bc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ba0a843
 
d65a8bc
 
 
 
 
 
 
 
 
 
 
ba0a843
 
 
602b640
545d6f0
 
d65a8bc
 
 
 
 
 
ba0a843
545d6f0
ba0a843
d65a8bc
 
ba0a843
 
d65a8bc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import gradio as gr
from PIL import Image, ImageOps, ImageEnhance, ImageDraw

def edit_image(image, grayscale, flip, rotate, brightness, contrast, color, color_picker, coordinates):
    img = Image.open(image)
    if grayscale:
        img = ImageOps.grayscale(img)
    if flip:
        img = ImageOps.flip(img)
    if rotate:
        img = img.rotate(rotate)
    
    # Apply brightness
    enhancer = ImageEnhance.Brightness(img)
    img = enhancer.enhance(brightness)
    
    # Apply contrast
    enhancer = ImageEnhance.Contrast(img)
    img = enhancer.enhance(contrast)
    
    # Apply color
    enhancer = ImageEnhance.Color(img)
    img = enhancer.enhance(color)
    
    # Change color of selected area
    if coordinates:
        draw = ImageDraw.Draw(img)
        for coord in coordinates:
            draw.rectangle(coord, fill=color_picker, outline=None)

    return img

def parse_coordinates(coordinate_str):
    coordinates = []
    if coordinate_str:
        for coord in coordinate_str.split(';'):
            try:
                x1, y1, x2, y2 = map(int, coord.split(','))
                coordinates.append((x1, y1, x2, y2))
            except ValueError:
                continue
    return coordinates

interface = gr.Interface(
    fn=edit_image,
    inputs=[
        gr.Image(type="filepath", label="Upload Image"),
        gr.Checkbox(label="Grayscale"),
        gr.Checkbox(label="Flip Vertically"),
        gr.Slider(minimum=0, maximum=360, step=1, value=0, label="Rotate Angle"),
        gr.Slider(minimum=0.1, maximum=2, step=0.1, value=1, label="Brightness"),
        gr.Slider(minimum=0.1, maximum=2, step=0.1, value=1, label="Contrast"),
        gr.Slider(minimum=0.1, maximum=2, step=0.1, value=1, label="Color"),
        gr.ColorPicker(label="Select Color"),
        gr.Textbox(label="Coordinates (x1,y1,x2,y2;...)", placeholder="Enter coordinates separated by semicolons")
    ],
    outputs=gr.Image(),
    live=True,
    title="Advanced Image Editor",
    description="Upload an image and apply various transformations including brightness, contrast, color adjustments, and change the color of specific areas."
)

interface.launch()