Spaces:
Sleeping
Sleeping
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() |