Kims12's picture
Update app.py
657cc8b verified
raw
history blame
3.26 kB
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()