File size: 2,013 Bytes
ef13280
f10fa6e
ef13280
bf55f48
 
 
 
 
 
 
 
5ec77f2
 
bf55f48
faa80dc
bf55f48
 
 
e4485f0
faa80dc
5e2508d
bf55f48
faa80dc
bf55f48
 
 
5e2508d
faa80dc
5e2508d
faa80dc
bf55f48
 
faa80dc
 
bf55f48
 
17d28ec
faa80dc
bf55f48
6b248ff
0b2b293
ef13280
 
8bb57d6
26ccc58
faa80dc
 
 
bf55f48
 
faa80dc
26ccc58
faa80dc
bf55f48
 
ef13280
 
 
 
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
import gradio as gr
from PIL import Image, ImageEnhance

def enhance_image(image, 
                 vibrancy=1.0, 
                 sharpness=1.0, 
                 yellow_reduce=0.0, 
                 magenta_reduce=0.0, 
                 brightness=0.0):
    
    # Convert to RGB
    image = image.convert("RGB")
    
    # Yellow reduction matrix (targets red/green channels)
    yellow_matrix = (
        1.0 - yellow_reduce*0.4, 0, 0, 0,
        0, 1.0 - yellow_reduce*0.6, 0, 0,
        0, 0, 1.0 + yellow_reduce*0.2, 0  # Compensate with slight blue
    )
    image = image.convert("RGB", yellow_matrix)
    
    # Magenta reduction matrix (targets red/blue channels)
    magenta_matrix = (
        1.0 - magenta_reduce*0.3, 0, 0, 0,
        0, 1.0 + magenta_reduce*0.4, 0, 0,
        0, 0, 1.0 - magenta_reduce*0.3, 0
    )
    image = image.convert("RGB", magenta_matrix)
    
    # Apply brightness boost
    if brightness > 0:
        image = ImageEnhance.Brightness(image).enhance(1.0 + brightness)
    
    # Apply vibrancy enhancements
    image = ImageEnhance.Color(image).enhance(vibrancy)
    image = ImageEnhance.Contrast(image).enhance(1.0 + (vibrancy-1)*0.15)
    
    # Apply sharpness last
    image = ImageEnhance.Sharpness(image).enhance(sharpness)
    
    return image

iface = gr.Interface(
    fn=enhance_image,
    inputs=[
        gr.Image(type="pil", label="Original Image"),
        gr.Slider(0.5, 2.0, 1.0, step=0.1, label="Vibrancy"),
        gr.Slider(0.5, 3.0, 1.0, step=0.1, label="Sharpness"),
        gr.Slider(0.0, 0.5, 0.0, step=0.05, label="Yellow Reduction"),
        gr.Slider(0.0, 0.5, 0.0, step=0.05, label="Magenta Reduction"),
        gr.Slider(0.0, 0.5, 0.0, step=0.05, label="Brightness Boost")
    ],
    outputs=gr.Image(type="pil", label="Enhanced Image", format="jpeg"),
    title="Professional Image Corrector",
    description="Independent controls for yellow/magenta reduction with brightness preservation"
)

if __name__ == "__main__":
    iface.launch()