File size: 2,123 Bytes
63495b1
f7e502f
7c2306e
f7e502f
 
 
06010a5
f7e502f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
06010a5
f7e502f
9a7103b
7c2306e
9a7103b
f7e502f
88fe407
b8897e0
 
 
 
 
 
 
 
 
 
 
 
21a3715
88fe407
 
 
 
 
 
7c2306e
f7e502f
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
import gradio as gr
from PIL import Image, ImageEnhance, ImageFilter

def to_black_and_white(input_image, contrast, brightness, sharpness, color, filter_intensity):
    if input_image is None:
        return None
    
    # Adjust contrast
    enhancer = ImageEnhance.Contrast(input_image)
    adjusted_image = enhancer.enhance(contrast)

    # Adjust brightness
    enhancer = ImageEnhance.Brightness(adjusted_image)
    adjusted_image = enhancer.enhance(brightness)

    # Adjust sharpness
    enhancer = ImageEnhance.Sharpness(adjusted_image)
    adjusted_image = enhancer.enhance(sharpness)

    # Adjust color
    enhancer = ImageEnhance.Color(adjusted_image)
    adjusted_image = enhancer.enhance(color)

    # Apply a general filter for intensity
    adjusted_image = adjusted_image.filter(ImageFilter.GaussianBlur(radius=(1 - filter_intensity)))

    # Convert to grayscale
    bw_image = adjusted_image.convert("L")
    return bw_image

with gr.Blocks() as app:
    gr.Markdown("### Black and White Image Maker with Advanced Adjustments")
    
    with gr.Row():
        with gr.Column():
            image_input = gr.Image(type="pil", label="Upload your Image")
            
            with gr.Column(scale=1):
                contrast_slider = gr.Slider(minimum=0.5, maximum=3.0, value=1.0, label="Contrast")
                brightness_slider = gr.Slider(minimum=0.5, maximum=3.0, value=1.0, label="Brightness")
                sharpness_slider = gr.Slider(minimum=0.5, maximum=3.0, value=1.0, label="Sharpness")
                color_slider = gr.Slider(minimum=0, maximum=3.0, value=1.0, label="Color Balance")
                filter_slider = gr.Slider(minimum=0, maximum=1.0, value=1.0, label="Filter Intensity")
                apply_button = gr.Button("Click to Apply")
                
        image_output = gr.Image(type="pil", label="Black and White Image")
        
        apply_button.click(
            to_black_and_white, 
            inputs=[image_input, contrast_slider, brightness_slider, sharpness_slider, color_slider, filter_slider], 
            outputs=image_output
        )

app.launch()