remove-background-base64.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. """
  2. Base64 图片抠图脚本
  3. 接收输入图片路径和输出图片路径,进行抠图处理
  4. """
  5. import sys
  6. import os
  7. from rembg import remove
  8. from PIL import Image
  9. def main():
  10. if len(sys.argv) < 3:
  11. print("错误: 需要提供输入和输出路径")
  12. sys.exit(1)
  13. input_path = sys.argv[1]
  14. output_path = sys.argv[2]
  15. try:
  16. # 读取输入图像
  17. input_image = Image.open(input_path)
  18. original_size = input_image.size
  19. # 确保输入图像是RGB模式
  20. if input_image.mode != 'RGB':
  21. input_image = input_image.convert('RGB')
  22. # 使用 rembg 移除背景
  23. output_image = remove(input_image, post_process_mask=False)
  24. # 确保输出图像尺寸与输入图像一致
  25. if output_image.size != original_size:
  26. final_image = Image.new('RGBA', original_size, (0, 0, 0, 0))
  27. final_image.paste(output_image, (0, 0), output_image if output_image.mode == 'RGBA' else None)
  28. output_image = final_image
  29. else:
  30. if output_image.mode != 'RGBA':
  31. output_image = output_image.convert('RGBA')
  32. # 保存结果
  33. output_image.save(output_path, 'PNG')
  34. print("抠图完成")
  35. except Exception as error:
  36. print(f"错误: {error}", file=sys.stderr)
  37. sys.exit(1)
  38. if __name__ == '__main__':
  39. main()