Spaces:
Running
on
Zero
Running
on
Zero
import gradio as gr | |
from PIL import Image, ImageEnhance, ImageFilter | |
# ํํฐ ์ ์ฉ ํจ์ | |
def apply_filter(image, filter_type, intensity): | |
image = image.convert("RGB") | |
if filter_type == "Soft Glow": | |
return image.filter(ImageFilter.GaussianBlur(radius=intensity)) | |
elif filter_type == "Portrait Enhancer": | |
enhancer = ImageEnhance.Color(image) | |
return enhancer.enhance(1 + intensity / 10) | |
elif filter_type == "Warm Tone": | |
r, g, b = image.split() | |
r = r.point(lambda i: min(255, i + intensity * 10)) | |
return Image.merge("RGB", (r, g, b)) | |
elif filter_type == "Cold Tone": | |
r, g, b = image.split() | |
b = b.point(lambda i: min(255, i + intensity * 10)) | |
return Image.merge("RGB", (r, g, b)) | |
elif filter_type == "High-Key": | |
enhancer = ImageEnhance.Brightness(image) | |
return enhancer.enhance(1 + intensity / 10) | |
elif filter_type == "Low-Key": | |
enhancer = ImageEnhance.Brightness(image) | |
return enhancer.enhance(1 - intensity / 10) | |
elif filter_type == "Haze": | |
return image.filter(ImageFilter.BLUR) | |
elif filter_type == "Monochrome": | |
return image.convert("L").convert("RGB") | |
else: | |
return image | |
# ์ด๊ธฐ๊ฐ ์ค์ ํจ์ | |
def set_initial_intensity(filter_type): | |
# ํํฐ๋ณ ์ด๊ธฐ๊ฐ ์ง์ | |
initial_values = { | |
"Soft Glow": 3, | |
"Portrait Enhancer": 2, | |
"Warm Tone": 5, | |
"Cold Tone": 5, | |
"High-Key": 3, | |
"Low-Key": 3, | |
"Haze": 2, | |
"Monochrome": 0 | |
} | |
return initial_values.get(filter_type, 0) | |
# Gradio UI ๊ตฌ์ฑ | |
with gr.Blocks() as demo: | |
gr.Markdown("# ์ธ๋ฌผ ์ฌ์ง ํํฐ ์ ์ฉ๊ธฐ") | |
with gr.Row(): | |
with gr.Column(): | |
image_input = gr.Image(type="pil", label="์ด๋ฏธ์ง ์ ๋ก๋") | |
filter_type = gr.Dropdown( | |
choices=[ | |
"Soft Glow", "Portrait Enhancer", "Warm Tone", | |
"Cold Tone", "High-Key", "Low-Key", "Haze", "Monochrome" | |
], | |
value="Soft Glow", # ๊ธฐ๋ณธ๊ฐ ์ค์ | |
label="ํํฐ ์ ํ" | |
) | |
intensity = gr.Slider( | |
0, 10, value=3, step=1, label="ํํฐ ๊ฐ๋" | |
) | |
with gr.Column(): | |
filtered_image = gr.Image(type="pil", label="ํํฐ ์ ์ฉ ์ด๋ฏธ์ง") | |
# ํํฐ ์ ์ฉ ๋ฐ ๊ฒฐ๊ณผ ์ฐ๊ฒฐ | |
def process_image(image, filter_type, intensity): | |
if image is None: | |
return None | |
filtered_image = apply_filter(image, filter_type, intensity) | |
return filtered_image | |
def update_intensity_on_filter_change(filter_type): | |
return set_initial_intensity(filter_type) | |
# UI ์ด๋ฒคํธ ์ฐ๊ฒฐ | |
filter_type.change( | |
update_intensity_on_filter_change, | |
inputs=filter_type, | |
outputs=intensity | |
) | |
image_input.change( | |
process_image, | |
inputs=[image_input, filter_type, intensity], | |
outputs=[filtered_image] | |
) | |
intensity.change( | |
process_image, | |
inputs=[image_input, filter_type, intensity], | |
outputs=[filtered_image] | |
) | |
# ์ฑ ์คํ | |
if __name__ == "__main__": | |
demo.launch() | |