jree423 commited on
Commit
1fa9877
·
verified ·
1 Parent(s): c4393e9

Fix serialization: Return PIL.Image directly instead of list

Browse files
Files changed (1) hide show
  1. handler.py +4 -15
handler.py CHANGED
@@ -1,8 +1,6 @@
1
  from typing import Dict, List, Any, Union
2
  import torch
3
  from PIL import Image, ImageDraw
4
- import io
5
- import base64
6
  import random
7
  import math
8
 
@@ -12,7 +10,7 @@ class EndpointHandler:
12
  self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
13
  print(f"DiffSketchEdit handler initialized on {self.device}")
14
 
15
- def __call__(self, data: Dict[str, Any]) -> List[Dict[str, Any]]:
16
  """
17
  Process the request and return generated image
18
 
@@ -22,7 +20,7 @@ class EndpointHandler:
22
  - parameters: Optional parameters (num_paths, num_iter, etc.)
23
 
24
  Returns:
25
- List containing dictionary with base64 encoded image
26
  """
27
  try:
28
  # Extract inputs
@@ -43,12 +41,7 @@ class EndpointHandler:
43
  # Generate sequential sketch edits
44
  image = self._generate_sequential_sketch(inputs, num_paths)
45
 
46
- # Convert to base64
47
- buffered = io.BytesIO()
48
- image.save(buffered, format="PNG")
49
- img_base64 = base64.b64encode(buffered.getvalue()).decode()
50
-
51
- return [{"generated_image": img_base64}]
52
 
53
  except Exception as e:
54
  print(f"Error in DiffSketchEdit handler: {e}")
@@ -57,11 +50,7 @@ class EndpointHandler:
57
  draw = ImageDraw.Draw(error_img)
58
  draw.text((10, 100), f"Error: {str(e)[:30]}", fill='white')
59
 
60
- buffered = io.BytesIO()
61
- error_img.save(buffered, format="PNG")
62
- img_base64 = base64.b64encode(buffered.getvalue()).decode()
63
-
64
- return [{"generated_image": img_base64}]
65
 
66
  def _generate_sequential_sketch(self, prompts: List[str], num_paths: int) -> Image.Image:
67
  """Generate a sketch that shows sequential editing based on prompts"""
 
1
  from typing import Dict, List, Any, Union
2
  import torch
3
  from PIL import Image, ImageDraw
 
 
4
  import random
5
  import math
6
 
 
10
  self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
11
  print(f"DiffSketchEdit handler initialized on {self.device}")
12
 
13
+ def __call__(self, data: Dict[str, Any]) -> Image.Image:
14
  """
15
  Process the request and return generated image
16
 
 
20
  - parameters: Optional parameters (num_paths, num_iter, etc.)
21
 
22
  Returns:
23
+ PIL Image object
24
  """
25
  try:
26
  # Extract inputs
 
41
  # Generate sequential sketch edits
42
  image = self._generate_sequential_sketch(inputs, num_paths)
43
 
44
+ return image
 
 
 
 
 
45
 
46
  except Exception as e:
47
  print(f"Error in DiffSketchEdit handler: {e}")
 
50
  draw = ImageDraw.Draw(error_img)
51
  draw.text((10, 100), f"Error: {str(e)[:30]}", fill='white')
52
 
53
+ return error_img
 
 
 
 
54
 
55
  def _generate_sequential_sketch(self, prompts: List[str], num_paths: int) -> Image.Image:
56
  """Generate a sketch that shows sequential editing based on prompts"""