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.Column(): image_input = gr.Image(type="pil", label="Upload your Image") 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()