test / app.py
kijeoung's picture
Update app.py
8db3ad1 verified
import gradio as gr
from PIL import Image, ImageEnhance, ImageOps, ImageFilter
# ํ•„ํ„ฐ ํšจ๊ณผ ์ •์˜
def apply_filter(image, filter_name, intensity):
if filter_name == "Soft Glow":
return image.filter(ImageFilter.GaussianBlur(intensity))
elif filter_name == "Portrait Enhancer":
enhancer = ImageEnhance.Brightness(image)
return enhancer.enhance(1 + (intensity / 100))
elif filter_name == "Warm Tone":
red, green, blue = image.split()
red = red.point(lambda p: min(255, p + intensity))
return Image.merge("RGB", (red, green, blue))
elif filter_name == "Cold Tone":
red, green, blue = image.split()
blue = blue.point(lambda p: min(255, p + intensity))
return Image.merge("RGB", (red, green, blue))
elif filter_name == "High-Key":
enhancer = ImageEnhance.Brightness(image)
return enhancer.enhance(1.5 + (intensity / 200))
elif filter_name == "Low-Key":
enhancer = ImageEnhance.Contrast(image)
return enhancer.enhance(0.8 - (intensity / 200))
elif filter_name == "Haze":
return image.filter(ImageFilter.BLUR)
elif filter_name == "Monochrome":
return ImageOps.grayscale(image)
else:
return image
# Gradio UI ๊ตฌ์„ฑ
with gr.Blocks() as app:
gr.Markdown("# ์ธ๋ฌผ ์‚ฌ์ง„ ํ•„ํ„ฐ ์ ์šฉ ์•ฑ")
with gr.Row():
input_image = gr.Image(label="์›๋ณธ ์ด๋ฏธ์ง€", type="pil")
filter_name = gr.Dropdown(
["Soft Glow", "Portrait Enhancer", "Warm Tone", "Cold Tone",
"High-Key", "Low-Key", "Haze", "Monochrome"],
label="ํ•„ํ„ฐ ์„ ํƒ"
)
intensity = gr.Slider(0, 100, step=1, label="ํ•„ํ„ฐ ๊ฐ•๋„")
apply_button = gr.Button("ํ•„ํ„ฐ ์ ์šฉ")
with gr.Row():
comparison = gr.Image(label="๋ณ€๊ฒฝ ์ „ํ›„ ๋น„๊ต", type="pil")
def apply_filter_and_compare(image, filter_name, intensity):
filtered_image = apply_filter(image, filter_name, intensity)
# ์Šฌ๋ผ์ด๋”๋ฅผ ์œ„ํ•œ ์ด๋ฏธ์ง€ ๊ฒฐํ•ฉ
before_after = Image.new("RGB", (image.width * 2, image.height))
before_after.paste(image, (0, 0))
before_after.paste(filtered_image, (image.width, 0))
return before_after
apply_button.click(
fn=apply_filter_and_compare,
inputs=[input_image, filter_name, intensity],
outputs=comparison
)
# ์‹คํ–‰
if __name__ == "__main__":
app.launch()