EduardoM102 commited on
Commit
94197c1
·
unverified ·
1 Parent(s): 82731d0

svg and return png

Browse files
Files changed (2) hide show
  1. app.py +29 -3
  2. requirements.txt +2 -1
app.py CHANGED
@@ -25,7 +25,8 @@ from gradio_imageslider import ImageSlider
25
 
26
  from huggingface_hub import hf_hub_download
27
  import base64
28
- from io import BytesIO
 
29
  USE_TORCH_COMPILE = False
30
  ENABLE_CPU_OFFLOAD = os.getenv("ENABLE_CPU_OFFLOAD", "0") == "1"
31
 
@@ -152,6 +153,30 @@ def create_hdr_effect(original_image, hdr):
152
  hdr_image_8bit = np.clip(hdr_image * 255, 0, 255).astype('uint8')
153
  return Image.fromarray(cv2.cvtColor(hdr_image_8bit, cv2.COLOR_BGR2RGB))
154
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  lazy_pipe = LazyLoadPipeline()
156
  lazy_pipe.load()
157
 
@@ -193,8 +218,9 @@ def gradio_process_image(input_image, input_base64, resolution, num_inference_st
193
  # Convert input_image and result to numpy arrays
194
  input_array = np.array(input_image)
195
  result_array = np.array(result)
196
-
197
- return [input_array, result_array]
 
198
 
199
  title = """<h1 align="center">Image Upscaler with Tile Controlnet</h1>
200
  <p align="center">The main ideas come from</p>
 
25
 
26
  from huggingface_hub import hf_hub_download
27
  import base64
28
+ from io import BytesIO, StringIO
29
+ import svgwrite
30
  USE_TORCH_COMPILE = False
31
  ENABLE_CPU_OFFLOAD = os.getenv("ENABLE_CPU_OFFLOAD", "0") == "1"
32
 
 
153
  hdr_image_8bit = np.clip(hdr_image * 255, 0, 255).astype('uint8')
154
  return Image.fromarray(cv2.cvtColor(hdr_image_8bit, cv2.COLOR_BGR2RGB))
155
 
156
+ def save_as_png(image):
157
+ """Save image as PNG and return as base64."""
158
+ if isinstance(image, np.ndarray):
159
+ image = Image.fromarray(image)
160
+
161
+ buffered = BytesIO()
162
+ image.save(buffered, format="PNG")
163
+ img_str = base64.b64encode(buffered.getvalue()).decode()
164
+ return img_str
165
+
166
+ def vectorize_image(image):
167
+ svg_io = StringIO()
168
+ dwg = svgwrite.Drawing(size=(image.width, image.height))
169
+ for y in range(image.height):
170
+ for x in range(image.width):
171
+ r, g, b = image.getpixel((x, y))
172
+ color = f"rgb({r},{g},{b})"
173
+ dwg.add(dwg.rect(insert=(x, y), size=(1, 1), fill=color))
174
+ dwg.write(svg_io)
175
+
176
+ # Return the SVG as a response
177
+ svg_io.seek(0)
178
+ return svg_io.getvalue()
179
+
180
  lazy_pipe = LazyLoadPipeline()
181
  lazy_pipe.load()
182
 
 
218
  # Convert input_image and result to numpy arrays
219
  input_array = np.array(input_image)
220
  result_array = np.array(result)
221
+ png_base64 = save_as_png(result)
222
+ svg = vectorize_image(result)
223
+ return [input_array, result_array, png_base64, svg]
224
 
225
  title = """<h1 align="center">Image Upscaler with Tile Controlnet</h1>
226
  <p align="center">The main ideas come from</p>
requirements.txt CHANGED
@@ -12,4 +12,5 @@ peft
12
  gradio
13
  pillow
14
  gradio-imageslider
15
- pydantic==2.10.6
 
 
12
  gradio
13
  pillow
14
  gradio-imageslider
15
+ pydantic==2.10.6
16
+ svgwrite