Spaces:
Running
on
Zero
Running
on
Zero
File size: 3,258 Bytes
657cc8b |
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 |
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()
|