test_image / app.py
kijeoung's picture
Update app.py
16dcee9 verified
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()