Spaces:
Running
Running
File size: 3,137 Bytes
31c66c0 cd85e77 18b301b cd85e77 18b301b cd85e77 18b301b 31c66c0 cd85e77 18b301b 31c66c0 cd85e77 18b301b 31c66c0 cd85e77 18b301b cd85e77 18b301b cd85e77 18b301b cd85e77 18b301b cd85e77 18b301b 31c66c0 cd85e77 18b301b 31c66c0 cd85e77 31c66c0 cd85e77 31c66c0 cd85e77 31c66c0 cd85e77 31c66c0 cd85e77 18b301b cd85e77 18b301b cd85e77 31c66c0 18b301b | 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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | """
Image Enhancement Lab β Gradio (Spaces-ready, labeled sliders)
"""
import gradio as gr
import numpy as np
import tempfile
from PIL import Image, ImageEnhance, ImageFilter
def apply_enhancements(image, contrast, sharpness, brightness, saturation, upscale, blur_radius):
if image is None:
return None, None
original = Image.fromarray(image).convert("RGB")
# Prevent large image crashes
max_size = 1024
if max(original.size) > max_size:
original.thumbnail((max_size, max_size))
enhanced = original.copy()
# Upscale
if upscale != 1.0:
w, h = enhanced.size
enhanced = enhanced.resize((int(w * upscale), int(h * upscale)), Image.LANCZOS)
# Enhancements
enhanced = ImageEnhance.Contrast(enhanced).enhance(contrast)
enhanced = ImageEnhance.Brightness(enhanced).enhance(brightness)
enhanced = ImageEnhance.Color(enhanced).enhance(saturation)
enhanced = ImageEnhance.Sharpness(enhanced).enhance(sharpness)
# Blur
if blur_radius > 0:
enhanced = enhanced.filter(ImageFilter.GaussianBlur(radius=blur_radius))
return np.array(original), np.array(enhanced)
def save_enhanced(image, contrast, sharpness, brightness, saturation, upscale, blur_radius):
_, enh_np = apply_enhancements(
image, contrast, sharpness, brightness, saturation, upscale, blur_radius
)
if enh_np is None:
return None
tmp = tempfile.NamedTemporaryFile(suffix=".png", delete=False)
tmp.close()
Image.fromarray(enh_np).save(tmp.name)
return tmp.name
with gr.Blocks(title="Image Enhancement Lab") as demo:
gr.Markdown("# πΌοΈ Image Enhancement Lab")
gr.Markdown("Upload an image and adjust sliders to enhance it.")
with gr.Row():
with gr.Column(scale=1):
image_input = gr.Image(label="Upload Image", type="numpy")
gr.Markdown("### π¨ Color Adjustments")
contrast = gr.Slider(0.1, 3.0, 1.0, label="Contrast (1.0 = original)")
brightness = gr.Slider(0.1, 3.0, 1.0, label="Brightness (1.0 = original)")
saturation = gr.Slider(0.0, 3.0, 1.0, label="Saturation (0 = grayscale)")
gr.Markdown("### π Detail Controls")
sharpness = gr.Slider(0.0, 5.0, 1.0, label="Sharpness (0 = blurry)")
blur = gr.Slider(0.0, 10.0, 0.0, label="Gaussian Blur Radius")
gr.Markdown("### π Size Control")
upscale = gr.Slider(0.25, 4.0, 1.0, label="Upscale Factor")
apply_btn = gr.Button("Apply Enhancements")
save_btn = gr.Button("Download Enhanced Image")
download = gr.File(label="Download File", visible=True)
with gr.Column(scale=2):
original_out = gr.Image(label="Original Image")
enhanced_out = gr.Image(label="Enhanced Image")
inputs = [image_input, contrast, sharpness, brightness, saturation, upscale, blur]
apply_btn.click(apply_enhancements, inputs, [original_out, enhanced_out])
save_btn.click(save_enhanced, inputs, download)
# Required for Hugging Face Spaces
demo.queue()
demo.launch() |