Spaces:
Sleeping
Sleeping
| 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() | |