LogicGoInfotechSpaces commited on
Commit
7f02de5
·
1 Parent(s): fad49fa

feat(api): support invert_mask flag for /inpaint and /inpaint-multipart (selected area removed by default)

Browse files
Files changed (1) hide show
  1. api/main.py +5 -3
api/main.py CHANGED
@@ -48,6 +48,7 @@ def bearer_auth(authorization: Optional[str] = Header(default=None)) -> None:
48
  class InpaintRequest(BaseModel):
49
  image_id: str
50
  mask_id: str
 
51
 
52
 
53
  @app.get("/")
@@ -141,7 +142,7 @@ def inpaint(req: InpaintRequest, _: None = Depends(bearer_auth)) -> Dict[str, st
141
  mask_img = Image.open(file_store[req.mask_id]["path"]) # may be RGB/gray/RGBA
142
  mask_rgba = _load_rgba_mask_from_image(mask_img)
143
 
144
- result = process_inpaint(np.array(img_rgba), mask_rgba)
145
  result_name = f"output_{uuid.uuid4().hex}.png"
146
  result_path = os.path.join(OUTPUT_DIR, result_name)
147
  Image.fromarray(result).save(result_path)
@@ -162,7 +163,7 @@ def inpaint_url(req: InpaintRequest, request: Request, _: None = Depends(bearer_
162
  mask_img = Image.open(file_store[req.mask_id]["path"]) # may be RGB/gray/RGBA
163
  mask_rgba = _load_rgba_mask_from_image(mask_img)
164
 
165
- result = process_inpaint(np.array(img_rgba), mask_rgba)
166
  result_name = f"output_{uuid.uuid4().hex}.png"
167
  result_path = os.path.join(OUTPUT_DIR, result_name)
168
  Image.fromarray(result).save(result_path)
@@ -177,6 +178,7 @@ def inpaint_multipart(
177
  image: UploadFile = File(...),
178
  mask: UploadFile = File(...),
179
  request: Request = None,
 
180
  _: None = Depends(bearer_auth),
181
  ) -> Dict[str, str]:
182
  # Load in-memory
@@ -184,7 +186,7 @@ def inpaint_multipart(
184
  m = Image.open(mask.file)
185
  mask_rgba = _load_rgba_mask_from_image(m)
186
 
187
- result = process_inpaint(np.array(img), mask_rgba)
188
  result_name = f"output_{uuid.uuid4().hex}.png"
189
  result_path = os.path.join(OUTPUT_DIR, result_name)
190
  Image.fromarray(result).save(result_path)
 
48
  class InpaintRequest(BaseModel):
49
  image_id: str
50
  mask_id: str
51
+ invert_mask: bool = True # True => selected/painted area is removed
52
 
53
 
54
  @app.get("/")
 
142
  mask_img = Image.open(file_store[req.mask_id]["path"]) # may be RGB/gray/RGBA
143
  mask_rgba = _load_rgba_mask_from_image(mask_img)
144
 
145
+ result = process_inpaint(np.array(img_rgba), mask_rgba, invert_mask=req.invert_mask)
146
  result_name = f"output_{uuid.uuid4().hex}.png"
147
  result_path = os.path.join(OUTPUT_DIR, result_name)
148
  Image.fromarray(result).save(result_path)
 
163
  mask_img = Image.open(file_store[req.mask_id]["path"]) # may be RGB/gray/RGBA
164
  mask_rgba = _load_rgba_mask_from_image(mask_img)
165
 
166
+ result = process_inpaint(np.array(img_rgba), mask_rgba, invert_mask=req.invert_mask)
167
  result_name = f"output_{uuid.uuid4().hex}.png"
168
  result_path = os.path.join(OUTPUT_DIR, result_name)
169
  Image.fromarray(result).save(result_path)
 
178
  image: UploadFile = File(...),
179
  mask: UploadFile = File(...),
180
  request: Request = None,
181
+ invert_mask: bool = True,
182
  _: None = Depends(bearer_auth),
183
  ) -> Dict[str, str]:
184
  # Load in-memory
 
186
  m = Image.open(mask.file)
187
  mask_rgba = _load_rgba_mask_from_image(m)
188
 
189
+ result = process_inpaint(np.array(img), mask_rgba, invert_mask=invert_mask)
190
  result_name = f"output_{uuid.uuid4().hex}.png"
191
  result_path = os.path.join(OUTPUT_DIR, result_name)
192
  Image.fromarray(result).save(result_path)