MCPcopy Create free account
hub / github.com/BIT-DataLab/Edit-Banana / process

Method process

modules/icon_picture_processor.py:266–315  ·  view source on GitHub ↗

Process icon/picture elements in context.

(self, context: ProcessingContext)

Source from the content-addressed store, hash-verified

264 self.load_rmbg_model()
265
266 def process(self, context: ProcessingContext) -> ProcessingResult:
267 """Process icon/picture elements in context."""
268 self._log("Processing Icon/Picture elements")
269 self.load_rmbg_model()
270
271 # Load image
272 if not context.image_path or not os.path.exists(context.image_path):
273 return ProcessingResult(
274 success=False,
275 error_message="Invalid image path"
276 )
277
278 original_image = Image.open(context.image_path).convert("RGB")
279 cv2_image = cv2.imread(context.image_path)
280
281 # Filter elements to process
282 elements_to_process = self._get_elements_to_process(context.elements)
283
284 self._log(f"Elements to process: {len(elements_to_process)}")
285
286 processed_count = 0
287 rmbg_count = 0
288 keep_bg_count = 0
289
290 for elem in elements_to_process:
291 try:
292 is_rmbg = self._process_element(elem, original_image)
293 processed_count += 1
294 if is_rmbg:
295 rmbg_count += 1
296 else:
297 keep_bg_count += 1
298 except Exception as e:
299 elem.processing_notes.append(f"Failed: {str(e)}")
300 self._log(f"Element {elem.id} failed: {e}")
301
302 self._log(f"Done: {processed_count}/{len(elements_to_process)} (RMBG:{rmbg_count}, keep_bg:{keep_bg_count})")
303
304 return ProcessingResult(
305 success=True,
306 elements=context.elements,
307 canvas_width=context.canvas_width,
308 canvas_height=context.canvas_height,
309 metadata={
310 'processed_count': processed_count,
311 'total_to_process': len(elements_to_process),
312 'rmbg_count': rmbg_count,
313 'keep_bg_count': keep_bg_count
314 }
315 )
316
317 def _get_elements_to_process(self, elements: List[ElementInfo]) -> List[ElementInfo]:
318 """Filter elements to process (icons, arrows, etc.; arrows treated as icon crop)."""

Callers 1

process_icons_picturesFunction · 0.95

Calls 5

load_rmbg_modelMethod · 0.95
_process_elementMethod · 0.95
ProcessingResultClass · 0.85
_logMethod · 0.80

Tested by

no test coverage detected