CSB261 commited on
Commit
264e399
ยท
verified ยท
1 Parent(s): b9399f2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -21
app.py CHANGED
@@ -17,13 +17,10 @@ def process_image(file,
17
  ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ํ•จ์ˆ˜
18
  """
19
  if file is None:
20
- return None, None, None, None
21
 
22
- # Extract original filename
23
- original_filename = os.path.basename(file.name)
24
-
25
- # Open the image
26
- image = Image.open(file).convert("RGB")
27
  original_image = image.copy()
28
 
29
  # Convert PIL Image to OpenCV format
@@ -70,24 +67,21 @@ def process_image(file,
70
 
71
  # ๋ณ€ํ™˜๋œ ์ด๋ฏธ์ง€๋ฅผ PIL ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜
72
  transformed_image = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
73
- transformed_image = Image.fromarray(transformed_image)
74
 
75
  # Prepare the download file
76
  buf = BytesIO()
77
- transformed_image.save(buf, format="JPEG")
78
  buf.seek(0)
79
 
80
- # ์ƒˆ๋กœ์šด ํŒŒ์ผ๋ช… ์„ค์ • (์˜ˆ: original_transformed.jpg)
81
- if '.' in original_filename:
82
- base, ext = original_filename.rsplit('.', 1)
83
- else:
84
- base, ext = original_filename, 'jpg'
85
- new_filename = f"{base}_transformed.{ext}"
86
-
87
- # gr.File์„ ์œ„ํ•œ ํŒŒ์ผ ์ด๋ฆ„ ์„ค์ •
88
- buf.name = new_filename
89
 
90
- return transformed_image, original_image, transformed_image, buf
91
 
92
  def blend_images(original, transformed, alpha):
93
  """
@@ -98,6 +92,15 @@ def blend_images(original, transformed, alpha):
98
  blended = Image.blend(original, transformed, alpha)
99
  return blended
100
 
 
 
 
 
 
 
 
 
 
101
  # Gradio ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์„ฑ
102
  def create_interface():
103
  with gr.Blocks() as demo:
@@ -105,7 +108,7 @@ def create_interface():
105
 
106
  with gr.Row():
107
  with gr.Column(scale=1):
108
- input_image = gr.File(type="file", label="์›๋ณธ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ")
109
  convert_bw = gr.Checkbox(label="ํ‘๋ฐฑ์œผ๋กœ ๋ณ€ํ™˜", value=True)
110
  denoise = gr.Checkbox(label="๋…ธ์ด์ฆˆ ์ œ๊ฑฐ", value=False)
111
  sharpen = gr.Checkbox(label="์ƒคํ”„๋‹", value=False)
@@ -127,7 +130,14 @@ def create_interface():
127
  submit.click(
128
  fn=process_image,
129
  inputs=[input_image, convert_bw, denoise, sharpen, gamma, brightness, contrast, saturation],
130
- outputs=[transformed_image, original_state, transformed_state, download_btn]
 
 
 
 
 
 
 
131
  )
132
 
133
  gr.Markdown("### ์ด๋ฏธ์ง€ ๋น„๊ต")
@@ -139,7 +149,7 @@ def create_interface():
139
  # ์Šฌ๋ผ์ด๋” ์กฐ์ž‘ ์‹œ ์ด๋ฏธ์ง€ ํ˜ผํ•ฉ
140
  alpha_slider.change(
141
  fn=blend_images,
142
- inputs=[original_state, transformed_state, alpha_slider],
143
  outputs=blended_image
144
  )
145
 
 
17
  ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ํ•จ์ˆ˜
18
  """
19
  if file is None:
20
+ return None, None
21
 
22
+ # Read the binary data
23
+ image = Image.open(BytesIO(file)).convert("RGB")
 
 
 
24
  original_image = image.copy()
25
 
26
  # Convert PIL Image to OpenCV format
 
67
 
68
  # ๋ณ€ํ™˜๋œ ์ด๋ฏธ์ง€๋ฅผ PIL ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜
69
  transformed_image = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
70
+ transformed_image_pil = Image.fromarray(transformed_image)
71
 
72
  # Prepare the download file
73
  buf = BytesIO()
74
+ transformed_image_pil.save(buf, format="JPEG")
75
  buf.seek(0)
76
 
77
+ # Set the file name
78
+ # Extract original file name from the uploaded file
79
+ # Since gr.File with type='binary' provides bytes, the filename needs to be extracted separately
80
+ # For simplicity, set a default filename
81
+ original_filename = "transformed_image.jpg"
82
+ buf.name = original_filename
 
 
 
83
 
84
+ return transformed_image_pil, buf
85
 
86
  def blend_images(original, transformed, alpha):
87
  """
 
92
  blended = Image.blend(original, transformed, alpha)
93
  return blended
94
 
95
+ def get_original_image(file):
96
+ """
97
+ Get the original image as PIL.Image
98
+ """
99
+ if file is None:
100
+ return None
101
+ image = Image.open(BytesIO(file)).convert("RGB")
102
+ return image
103
+
104
  # Gradio ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์„ฑ
105
  def create_interface():
106
  with gr.Blocks() as demo:
 
108
 
109
  with gr.Row():
110
  with gr.Column(scale=1):
111
+ input_image = gr.File(type="binary", label="์›๋ณธ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ")
112
  convert_bw = gr.Checkbox(label="ํ‘๋ฐฑ์œผ๋กœ ๋ณ€ํ™˜", value=True)
113
  denoise = gr.Checkbox(label="๋…ธ์ด์ฆˆ ์ œ๊ฑฐ", value=False)
114
  sharpen = gr.Checkbox(label="์ƒคํ”„๋‹", value=False)
 
130
  submit.click(
131
  fn=process_image,
132
  inputs=[input_image, convert_bw, denoise, sharpen, gamma, brightness, contrast, saturation],
133
+ outputs=[transformed_image, download_btn]
134
+ )
135
+
136
+ # ์›๋ณธ ์ด๋ฏธ์ง€๋ฅผ ์ƒํƒœ์— ์ €์žฅ
137
+ input_image.change(
138
+ fn=get_original_image,
139
+ inputs=input_image,
140
+ outputs=original_state
141
  )
142
 
143
  gr.Markdown("### ์ด๋ฏธ์ง€ ๋น„๊ต")
 
149
  # ์Šฌ๋ผ์ด๋” ์กฐ์ž‘ ์‹œ ์ด๋ฏธ์ง€ ํ˜ผํ•ฉ
150
  alpha_slider.change(
151
  fn=blend_images,
152
+ inputs=[original_state, transformed_image, alpha_slider],
153
  outputs=blended_image
154
  )
155