From 46845e5f57ae62e86232a9b63430e45f157334d3 Mon Sep 17 00:00:00 2001 From: jingrow Date: Sun, 7 Dec 2025 05:34:33 +0800 Subject: [PATCH] =?UTF-8?q?fix(rmbg):=20=E4=BF=AE=E5=A4=8D=E9=98=9F?= =?UTF-8?q?=E5=88=97=E6=A8=A1=E5=BC=8F=E4=B8=8Bprocess=5Fimage=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E7=B1=BB=E5=9E=8B=E4=B8=8D=E4=B8=80=E8=87=B4=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复remove_background和remove_background_from_file方法中,队列模式返回dict但代码尝试调用save方法的问题 - 在调用处添加类型检查,兼容队列模式(返回dict)和非队列模式(返回Image) - 修复process_batch降级处理中的相同问题 修复前错误: 'dict' object has no attribute 'save' --- apps/rmbg/service.py | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/apps/rmbg/service.py b/apps/rmbg/service.py index 4e69f68..e5b2c56 100644 --- a/apps/rmbg/service.py +++ b/apps/rmbg/service.py @@ -391,15 +391,13 @@ class RmbgService: self.executor, lambda: Image.open(image_path).convert("RGB") ) - image_no_bg = await self.process_image(image) + result = await self.process_image(image) + if isinstance(result, dict): + return result image_url = await loop.run_in_executor( - self.executor, self.save_image_to_file, image_no_bg + self.executor, self.save_image_to_file, result ) - - return { - "status": "success", - "image_url": image_url - } + return {"status": "success", "image_url": image_url} finally: if temp_file and os.path.exists(temp_file): @@ -424,15 +422,13 @@ class RmbgService: self.executor, lambda: Image.open(io.BytesIO(file_content)).convert("RGB") ) - image_no_bg = await self.process_image(image) + result = await self.process_image(image) + if isinstance(result, dict): + return result image_url = await loop.run_in_executor( - self.executor, self.save_image_to_file, image_no_bg + self.executor, self.save_image_to_file, result ) - - return { - "status": "success", - "image_url": image_url - } + return {"status": "success", "image_url": image_url} except Exception as e: raise Exception(f"处理图片失败: {e}") @@ -665,10 +661,13 @@ class RmbgService: # 降级到单张处理 for image, image_size, index, url_str, _ in valid_items: try: - processed_image = await self.process_image(image) - image_url = await loop.run_in_executor( - self.executor, self.save_image_to_file, processed_image - ) + result_data = await self.process_image(image) + if isinstance(result_data, dict): + image_url = result_data["image_url"] + else: + image_url = await loop.run_in_executor( + self.executor, self.save_image_to_file, result_data + ) completed_order += 1 success_count += 1 result = {