umuth commited on
Commit
25509e4
1 Parent(s): 17689de

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -3
app.py CHANGED
@@ -17,6 +17,9 @@ logging.basicConfig(filename='svgmaker.log', level=logging.INFO,
17
 
18
  def process_single_image(image_file, stroke_width, fill, stroke, opacity, output_size, output_dir):
19
  try:
 
 
 
20
  logging.info(f"Processing image: {image_file.name}")
21
  with Image.open(image_file.name) as image:
22
  # Calculate new dimensions maintaining aspect ratio
@@ -46,13 +49,17 @@ def process_single_image(image_file, stroke_width, fill, stroke, opacity, output
46
  "potrace",
47
  temp_pgm_path,
48
  "--svg",
49
- "--o", output_svg
50
  ], check=True)
51
 
52
  # Clean up temporary PGM
53
  os.unlink(temp_pgm_path)
54
 
55
-
 
 
 
 
56
 
57
  return output_svg, preview
58
  except Exception as e:
@@ -60,6 +67,9 @@ def process_single_image(image_file, stroke_width, fill, stroke, opacity, output
60
  return None, None
61
 
62
  def vectorize_icons(images, stroke_width, fill, stroke, opacity, output_size, output_dir, progress=gr.Progress()):
 
 
 
63
  vectorized_icons = []
64
  svg_previews = []
65
  total_images = len(images)
@@ -144,6 +154,9 @@ with gr.Blocks() as app:
144
  svg_preview = gr.HTML(label="SVG Previews")
145
 
146
  def process_and_display(images, stroke_width, fill, stroke, opacity, output_size, output_dir):
 
 
 
147
  vectorized_icons, svg_previews = vectorize_icons(images, stroke_width, fill, stroke, opacity, output_size, output_dir)
148
  preview_html = create_preview_grid(svg_previews)
149
  # Filter out None values from vectorized_icons
@@ -163,4 +176,4 @@ if __name__ == "__main__":
163
  app.launch()
164
  except Exception as e:
165
  logging.error(f"Failed to launch app: {str(e)}")
166
- raise
 
17
 
18
  def process_single_image(image_file, stroke_width, fill, stroke, opacity, output_size, output_dir):
19
  try:
20
+ if image_file is None:
21
+ raise ValueError("No image file provided.")
22
+
23
  logging.info(f"Processing image: {image_file.name}")
24
  with Image.open(image_file.name) as image:
25
  # Calculate new dimensions maintaining aspect ratio
 
49
  "potrace",
50
  temp_pgm_path,
51
  "--svg",
52
+ "-o", output_svg
53
  ], check=True)
54
 
55
  # Clean up temporary PGM
56
  os.unlink(temp_pgm_path)
57
 
58
+ # Create a base64 encoded version of the SVG for preview
59
+ with open(output_svg, 'r') as f:
60
+ svg_content = f.read()
61
+ svg_base64 = base64.b64encode(svg_content.encode('utf-8')).decode('utf-8')
62
+ preview = f"data:image/svg+xml;base64,{svg_base64}"
63
 
64
  return output_svg, preview
65
  except Exception as e:
 
67
  return None, None
68
 
69
  def vectorize_icons(images, stroke_width, fill, stroke, opacity, output_size, output_dir, progress=gr.Progress()):
70
+ if images is None or len(images) == 0:
71
+ raise ValueError("No images were uploaded. Please upload at least one image.")
72
+
73
  vectorized_icons = []
74
  svg_previews = []
75
  total_images = len(images)
 
154
  svg_preview = gr.HTML(label="SVG Previews")
155
 
156
  def process_and_display(images, stroke_width, fill, stroke, opacity, output_size, output_dir):
157
+ if images is None or len(images) == 0:
158
+ raise ValueError("No images were uploaded. Please upload at least one image.")
159
+
160
  vectorized_icons, svg_previews = vectorize_icons(images, stroke_width, fill, stroke, opacity, output_size, output_dir)
161
  preview_html = create_preview_grid(svg_previews)
162
  # Filter out None values from vectorized_icons
 
176
  app.launch()
177
  except Exception as e:
178
  logging.error(f"Failed to launch app: {str(e)}")
179
+ raise