kijeoung commited on
Commit
238f6c4
Β·
verified Β·
1 Parent(s): 5f1ebb5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +102 -44
app.py CHANGED
@@ -1,50 +1,108 @@
1
  import gradio as gr
2
- from PIL import Image, ImageEnhance, ImageFilter, ImageOps
 
3
 
4
- # ν•„ν„° 적용 ν•¨μˆ˜
5
- def apply_filter(image, filter_type, intensity):
6
- if filter_type == "Soft Glow":
7
- enhancer = ImageEnhance.Brightness(image)
8
- brightened = enhancer.enhance(1 + intensity / 10) # 밝기 증가
9
- result = brightened.filter(ImageFilter.GaussianBlur(radius=intensity)) # λΈ”λŸ¬ 강도 쑰절
10
- elif filter_type == "Portrait Enhancer":
11
  enhancer = ImageEnhance.Sharpness(image)
12
- result = enhancer.enhance(1 + intensity / 5) # μ„ λͺ…도 증가
13
- elif filter_type == "Warm Tone":
14
- r, g, b = image.split()
15
- r = r.point(lambda i: i * (1 + intensity / 10)) # 빨간색 채널 강도 쑰절
16
- result = Image.merge("RGB", (r, g, b))
17
- elif filter_type == "Cold Tone":
18
- r, g, b = image.split()
19
- b = b.point(lambda i: i * (1 + intensity / 10)) # νŒŒλž€μƒ‰ 채널 강도 쑰절
20
- result = Image.merge("RGB", (r, g, b))
21
- elif filter_type == "High-Key":
22
- enhancer = ImageEnhance.Brightness(image)
23
- result = enhancer.enhance(1 + intensity / 10) # 밝기 증가
24
- elif filter_type == "Low-Key":
 
 
 
 
 
 
25
  enhancer = ImageEnhance.Brightness(image)
26
- result = enhancer.enhance(1 - intensity / 10) # 밝기 κ°μ†Œ
27
- elif filter_type == "Haze":
28
- result = image.filter(ImageFilter.GaussianBlur(radius=intensity)) # λΈ”λŸ¬ 강도 쑰절
29
- elif filter_type == "Monochrome":
30
- result = ImageOps.grayscale(image)
31
- else:
32
- result = image
33
-
34
- return result
35
-
36
- # Gradio μΈν„°νŽ˜μ΄μŠ€ 생성
37
- iface = gr.Interface(
38
- fn=apply_filter, # ν•„ν„° 적용 ν•¨μˆ˜ μ—°κ²°
39
- inputs=[gr.Image(type="pil"),
40
- gr.Radio(["Soft Glow", "Portrait Enhancer", "Warm Tone", "Cold Tone",
41
- "High-Key", "Low-Key", "Haze", "Monochrome"]),
42
- gr.Slider(1, 10, step=1, label="λ³€ν™˜ 강도")], # 이미지와 ν•„ν„° 선택 및 강도 μž…λ ₯
43
- outputs=gr.Image(type="pil"), # ν•„ν„° 적용 이미지 좜λ ₯
44
- title="인물사진 ν•„ν„° 적용기",
45
- description="인물사진에 λ‹€μ–‘ν•œ ν•„ν„°λ₯Ό μ μš©ν•˜κ³ , λ³€ν™˜ 강도λ₯Ό μ‘°μ ˆν•˜μ—¬ κ²°κ³Ό 이미지λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€."
46
- )
47
-
48
- # Gradio μ•± μ‹€ν–‰
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  if __name__ == "__main__":
50
  iface.launch()
 
1
  import gradio as gr
2
+ from PIL import Image, ImageEnhance, ImageOps, ImageFilter
3
+ from gradio_imageslider import ImageSlider
4
 
5
+ def apply_filter(image, filter_name, intensity):
6
+ if filter_name == "Soft Glow":
7
+ glow = image.filter(ImageFilter.GaussianBlur(intensity))
8
+ enhanced_image = Image.blend(image, glow, 0.5)
9
+ return enhanced_image
10
+
11
+ elif filter_name == "Portrait Enhancer":
12
  enhancer = ImageEnhance.Sharpness(image)
13
+ image = enhancer.enhance(1 + 0.1 * intensity)
14
+ enhancer = ImageEnhance.Color(image)
15
+ image = enhancer.enhance(1 + 0.1 * intensity)
16
+ return image
17
+
18
+ elif filter_name == "Warm Tone":
19
+ warm_tone = ImageEnhance.Color(image).enhance(1 + 0.1 * intensity)
20
+ return warm_tone
21
+
22
+ elif filter_name == "Cold Tone":
23
+ # 청둝색 μ˜€λ²„λ ˆμ΄ 적용
24
+ blue_overlay = Image.new('RGB', image.size, (173, 216, 230))
25
+ blended_image = Image.blend(image, blue_overlay, 0.05 * intensity)
26
+ # μ„ λͺ…도 κ°•ν™”
27
+ enhancer = ImageEnhance.Sharpness(blended_image)
28
+ sharpened_image = enhancer.enhance(1 + 0.3 * intensity) # μ„ λͺ…도 μ‘°μ •
29
+ return sharpened_image
30
+
31
+ elif filter_name == "High-Key":
32
  enhancer = ImageEnhance.Brightness(image)
33
+ high_key = enhancer.enhance(1 + 0.1 * intensity)
34
+ enhancer = ImageEnhance.Contrast(high_key)
35
+ high_key = enhancer.enhance(0.8 + 0.02 * intensity)
36
+ return high_key
37
+
38
+ elif filter_name == "Low-Key":
39
+ enhancer = ImageEnhance.Contrast(image)
40
+ low_key = enhancer.enhance(1 + 0.1 * intensity)
41
+ enhancer = ImageEnhance.Brightness(low_key)
42
+ low_key = enhancer.enhance(1 - 0.05 * intensity)
43
+ return low_key
44
+
45
+ elif filter_name == "Haze":
46
+ haze = image.filter(ImageFilter.GaussianBlur(2 * intensity))
47
+ enhancer = ImageEnhance.Brightness(haze)
48
+ haze = enhancer.enhance(1 + 0.05 * intensity)
49
+ return haze
50
+
51
+ elif filter_name == "Monochrome":
52
+ mono = image.convert("L")
53
+ mono = ImageOps.colorize(mono, black="black", white="white")
54
+ enhancer = ImageEnhance.Contrast(mono)
55
+ mono = enhancer.enhance(1 + 0.1 * intensity)
56
+ return mono
57
+
58
+ return image
59
+
60
+ def get_filter_description(filter_name):
61
+ descriptions = {
62
+ "Soft Glow": "μ–Όκ΅΄μ˜ ν”ΌλΆ€λ₯Ό λΆ€λ“œλŸ½κ²Œ ν•˜λ©΄μ„œ μ€μ€ν•œ 빛을 λ”ν•΄μ£ΌλŠ” ν•„ν„°μž…λ‹ˆλ‹€.",
63
+ "Portrait Enhancer": "ν”ΌλΆ€ 톀을 κ· μΌν•˜κ²Œ λ§Œλ“€κ³ , λˆˆμ„ 밝게 ν•˜λ©°, μ–Όκ΅΄μ˜ μž…μ²΄κ°μ„ κ°•μ‘°ν•˜λŠ” ν•„ν„°μž…λ‹ˆλ‹€.",
64
+ "Warm Tone": "사진에 λ”°λœ»ν•œ 색쑰λ₯Ό μ μš©ν•˜μ—¬ ν”ΌλΆ€λ₯Ό κ±΄κ°•ν•˜κ²Œ 보이게 ν•©λ‹ˆλ‹€.",
65
+ "Cold Tone": "μ•„μ£Ό μ€μ€ν•œ νŒŒλž€μƒ‰ μ˜€λ²„λ ˆμ΄λ₯Ό μ μš©ν•˜κ³  μ„ λͺ…도λ₯Ό κ°•ν™”ν•˜μ—¬ μ‹œμ›ν•˜κ³  μ„ λͺ…ν•œ λŠλ‚Œμ„ μ£ΌλŠ” ν•„ν„°μž…λ‹ˆλ‹€.",
66
+ "High-Key": "밝고 ν™”μ‚¬ν•œ 이미지λ₯Ό λ§Œλ“€μ–΄μ£ΌλŠ” ν•„ν„°μž…λ‹ˆλ‹€. 인물 μ‚¬μ§„μ—μ„œ 특히 ν™”μ‚¬ν•œ λΆ„μœ„κΈ°λ₯Ό μ—°μΆœν•©λ‹ˆλ‹€.",
67
+ "Low-Key": "μ–΄λ‘μš΄ 톀을 κ°•μ‘°ν•˜μ—¬ 인물의 κ°μ •μ΄λ‚˜ λΆ„μœ„κΈ°λ₯Ό 극적으둜 ν‘œν˜„ν•˜λŠ” ν•„ν„°μž…λ‹ˆλ‹€.",
68
+ "Haze": "λΆ€λ“œλŸ½κ³  νλ¦Ών•œ 효과λ₯Ό μ£Όμ–΄ λͺ½ν™˜μ μ΄κ³  λ‘œλ§¨ν‹±ν•œ λŠλ‚Œμ„ μ£ΌλŠ” ν•„ν„°μž…λ‹ˆλ‹€.",
69
+ "Monochrome": "νŠΉμ • 색쑰 ν•˜λ‚˜λ§Œ μ‚¬μš©ν•˜μ—¬ 인물 사진을 λ‹¨μƒ‰μœΌλ‘œ ν‘œν˜„ν•˜λŠ” ν•„ν„°μž…λ‹ˆλ‹€."
70
+ }
71
+ return descriptions.get(filter_name, "")
72
+
73
+ def update_description(filter_name):
74
+ return get_filter_description(filter_name)
75
+
76
+ def process_image(image, filter_name, intensity):
77
+ filtered_image = apply_filter(image, filter_name, intensity)
78
+ return image, filtered_image # 원본 이미지와 ν•„ν„° 적용된 이미지 λ°˜ν™˜
79
+
80
+ with gr.Blocks() as iface:
81
+ with gr.Row():
82
+ with gr.Column():
83
+ image_input = gr.Image(type="pil", label="이미지 μ—…λ‘œλ“œ")
84
+ filter_input = gr.Radio(
85
+ ["Soft Glow", "Portrait Enhancer", "Warm Tone", "Cold Tone", "High-Key", "Low-Key", "Haze", "Monochrome"],
86
+ label="ν•„ν„° 선택",
87
+ value="Soft Glow"
88
+ )
89
+ intensity_slider = gr.Slider(1, 10, value=5, step=1, label="ν•„ν„° 강도")
90
+ description_output = gr.Markdown(get_filter_description("Soft Glow"))
91
+
92
+ with gr.Column():
93
+ slider_output = ImageSlider(label="Before and After", type="pil")
94
+
95
+ filter_input.change(fn=update_description, inputs=filter_input, outputs=description_output)
96
+
97
+ process_button = gr.Button("ν•„ν„° 적용")
98
+ process_button.click(
99
+ fn=process_image,
100
+ inputs=[image_input, filter_input, intensity_slider],
101
+ outputs=slider_output
102
+ )
103
+
104
+ iface.title = "인물 사진에 μ΅œμ ν™”λœ ν•„ν„°"
105
+ iface.description = "인물 사진에 μ΅œμ ν™”λœ λ‹€μ–‘ν•œ ν•„ν„°λ₯Ό μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€."
106
+
107
  if __name__ == "__main__":
108
  iface.launch()