Spaces:
Sleeping
Sleeping
File size: 4,884 Bytes
beefb5c 238f6c4 beefb5c 238f6c4 beefb5c 238f6c4 82eb83a 238f6c4 66e8dfe 16dcee9 | 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 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | import gradio as gr
from PIL import Image, ImageEnhance, ImageOps, ImageFilter
from gradio_imageslider import ImageSlider
def apply_filter(image, filter_name, intensity):
if filter_name == "Soft Glow":
glow = image.filter(ImageFilter.GaussianBlur(intensity))
enhanced_image = Image.blend(image, glow, 0.5)
return enhanced_image
elif filter_name == "Portrait Enhancer":
enhancer = ImageEnhance.Sharpness(image)
image = enhancer.enhance(1 + 0.1 * intensity)
enhancer = ImageEnhance.Color(image)
image = enhancer.enhance(1 + 0.1 * intensity)
return image
elif filter_name == "Warm Tone":
warm_tone = ImageEnhance.Color(image).enhance(1 + 0.1 * intensity)
return warm_tone
elif filter_name == "Cold Tone":
# μ²λ‘μ μ€λ²λ μ΄ μ μ©
blue_overlay = Image.new('RGB', image.size, (173, 216, 230))
blended_image = Image.blend(image, blue_overlay, 0.05 * intensity)
# μ λͺ
λ κ°ν
enhancer = ImageEnhance.Sharpness(blended_image)
sharpened_image = enhancer.enhance(1 + 0.3 * intensity) # μ λͺ
λ μ‘°μ
return sharpened_image
elif filter_name == "High-Key":
enhancer = ImageEnhance.Brightness(image)
high_key = enhancer.enhance(1 + 0.1 * intensity)
enhancer = ImageEnhance.Contrast(high_key)
high_key = enhancer.enhance(0.8 + 0.02 * intensity)
return high_key
elif filter_name == "Low-Key":
enhancer = ImageEnhance.Contrast(image)
low_key = enhancer.enhance(1 + 0.1 * intensity)
enhancer = ImageEnhance.Brightness(low_key)
low_key = enhancer.enhance(1 - 0.05 * intensity)
return low_key
elif filter_name == "Haze":
haze = image.filter(ImageFilter.GaussianBlur(2 * intensity))
enhancer = ImageEnhance.Brightness(haze)
haze = enhancer.enhance(1 + 0.05 * intensity)
return haze
elif filter_name == "Monochrome":
mono = image.convert("L")
mono = ImageOps.colorize(mono, black="black", white="white")
enhancer = ImageEnhance.Contrast(mono)
mono = enhancer.enhance(1 + 0.1 * intensity)
return mono
return image
def get_filter_description(filter_name):
descriptions = {
"Soft Glow": "μΌκ΅΄μ νΌλΆλ₯Ό λΆλλ½κ² νλ©΄μ μμν λΉμ λν΄μ£Όλ νν°μ
λλ€.",
"Portrait Enhancer": "νΌλΆ ν€μ κ· μΌνκ² λ§λ€κ³ , λμ λ°κ² νλ©°, μΌκ΅΄μ μ
체κ°μ κ°μ‘°νλ νν°μ
λλ€.",
"Warm Tone": "μ¬μ§μ λ°λ»ν μμ‘°λ₯Ό μ μ©νμ¬ νΌλΆλ₯Ό 건κ°νκ² λ³΄μ΄κ² ν©λλ€.",
"Cold Tone": "μμ£Ό μμν νλμ μ€λ²λ μ΄λ₯Ό μ μ©νκ³ μ λͺ
λλ₯Ό κ°ννμ¬ μμνκ³ μ λͺ
ν λλμ μ£Όλ νν°μ
λλ€.",
"High-Key": "λ°κ³ νμ¬ν μ΄λ―Έμ§λ₯Ό λ§λ€μ΄μ£Όλ νν°μ
λλ€. μΈλ¬Ό μ¬μ§μμ νΉν νμ¬ν λΆμκΈ°λ₯Ό μ°μΆν©λλ€.",
"Low-Key": "μ΄λμ΄ ν€μ κ°μ‘°νμ¬ μΈλ¬Όμ κ°μ μ΄λ λΆμκΈ°λ₯Ό κ·Ήμ μΌλ‘ νννλ νν°μ
λλ€.",
"Haze": "λΆλλ½κ³ νλ¦Ών ν¨κ³Όλ₯Ό μ£Όμ΄ λͺ½νμ μ΄κ³ λ‘맨ν±ν λλμ μ£Όλ νν°μ
λλ€.",
"Monochrome": "νΉμ μμ‘° νλλ§ μ¬μ©νμ¬ μΈλ¬Ό μ¬μ§μ λ¨μμΌλ‘ νννλ νν°μ
λλ€."
}
return descriptions.get(filter_name, "")
def update_description(filter_name):
return get_filter_description(filter_name)
def process_image(image, filter_name, intensity):
filtered_image = apply_filter(image, filter_name, intensity)
return image, filtered_image # μλ³Έ μ΄λ―Έμ§μ νν° μ μ©λ μ΄λ―Έμ§ λ°ν
with gr.Blocks() as iface:
with gr.Row():
with gr.Column():
image_input = gr.Image(type="pil", label="μ΄λ―Έμ§ μ
λ‘λ")
filter_input = gr.Radio(
["Soft Glow", "Portrait Enhancer", "Warm Tone", "Cold Tone", "High-Key", "Low-Key", "Haze", "Monochrome"],
label="νν° μ ν",
value="Soft Glow"
)
intensity_slider = gr.Slider(1, 10, value=5, step=1, label="νν° κ°λ")
description_output = gr.Markdown(get_filter_description("Soft Glow"))
with gr.Column():
slider_output = ImageSlider(label="Before and After", type="pil")
filter_input.change(fn=update_description, inputs=filter_input, outputs=description_output)
process_button = gr.Button("νν° μ μ©")
process_button.click(
fn=process_image,
inputs=[image_input, filter_input, intensity_slider],
outputs=slider_output
)
iface.title = "μΈλ¬Ό μ¬μ§μ μ΅μ νλ νν°"
iface.description = "μΈλ¬Ό μ¬μ§μ μ΅μ νλ λ€μν νν°λ₯Ό μ μ©ν μ μμ΅λλ€."
if __name__ == "__main__":
iface.launch()
|