"""
SVG 转换器 FastMCP 服务包
这是一个基于 FastMCP 的专业 SVG 文件转换服务包,提供完整的 SVG 转换功能。
支持将 SVG 转换为 PNG、ICO、JPG 等格式,优先使用 Cairo C库 进行高质量渲染。
主要功能:
- SVG 文件转换 (convert_svg_file)
- SVG 字符串转换 (convert_svg_string)
- 批量文件转换 (batch_convert_svg_files)
- 转换引擎信息查询 (get_converter_engine_info)
- SVG 文件信息分析 (get_svg_file_info, get_svg_string_info)
支持的输出格式:
- PNG (推荐,支持透明背景)
- ICO (图标格式,支持多尺寸)
- JPG/JPEG (适合照片,不支持透明)
转换引擎优先级:
1. Cairo C库 (cairosvg) - 最高质量,推荐
2. SVGLib (svglib + reportlab) - 良好兼容性
3. PIL (Pillow) - 基本功能,后备方案
作者: Rusian Huu
版本: 1.0.0
许可证: MIT
"""
# 版本信息
__version__ = "1.0.0"
__author__ = "Rusian Huu"
__email__ = "hu_bo_cheng@qq.com"
__license__ = "MIT"
# 导入核心组件
try:
from .svg_converter import SVGConverter, SVGConverterError, DependencyError, ConversionError
from .server import mcp
# 公共接口
__all__ = [
# 版本信息
"__version__",
"__author__",
"__email__",
"__license__",
# 核心类
"SVGConverter",
# 异常类
"SVGConverterError",
"DependencyError",
"ConversionError",
# FastMCP 服务实例
"mcp",
# 便捷函数
"get_version_info",
"get_supported_formats",
"check_dependencies",
]
except ImportError as e:
# 如果导入失败,提供基本信息
__all__ = [
"__version__",
"__author__",
"__email__",
"__license__",
]
import warnings
warnings.warn(f"部分模块导入失败: {e},请检查依赖项是否正确安装", ImportWarning)
def get_version_info():
"""
获取包版本信息
Returns:
dict: 包含版本、作者等信息的字典
"""
return {
"name": "svg-converter-mcp",
"version": __version__,
"author": __author__,
"email": __email__,
"license": __license__,
"description": "基于 FastMCP 的专业 SVG 文件转换服务",
}
def get_supported_formats():
"""
获取支持的输出格式列表
Returns:
list: 支持的格式列表
"""
return ["png", "ico", "jpg", "jpeg"]
def check_dependencies():
"""
检查依赖项安装状态
Returns:
dict: 依赖项状态信息
"""
dependencies = {
"required": {},
"optional": {},
"recommendations": []
}
# 检查必需依赖
required_deps = [
("fastmcp", "FastMCP 框架"),
("PIL", "Pillow 图像处理库"),
("pydantic", "数据验证库"),
]
for dep_name, description in required_deps:
try:
__import__(dep_name)
dependencies["required"][dep_name] = {
"installed": True,
"description": description
}
except ImportError:
dependencies["required"][dep_name] = {
"installed": False,
"description": description,
"install_command": f"pip install {dep_name} -i https://pypi.tuna.tsinghua.edu.cn/simple/"
}
# 检查可选依赖
optional_deps = [
("cairosvg", "Cairo C库 SVG 渲染器 (推荐)"),
("svglib", "ReportLab SVG 库"),
("reportlab", "ReportLab 图形库"),
]
for dep_name, description in optional_deps:
try:
__import__(dep_name)
dependencies["optional"][dep_name] = {
"installed": True,
"description": description
}
except ImportError:
dependencies["optional"][dep_name] = {
"installed": False,
"description": description,
"install_command": f"pip install {dep_name} -i https://pypi.tuna.tsinghua.edu.cn/simple/"
}
# 生成建议
if not dependencies["optional"]["cairosvg"]["installed"]:
dependencies["recommendations"].append(
"建议安装 cairosvg 以获得最高质量的 SVG 渲染效果"
)
if not dependencies["optional"]["svglib"]["installed"]:
dependencies["recommendations"].append(
"建议安装 svglib 和 reportlab 作为备用转换引擎"
)
return dependencies
# 包级别的便捷函数
def create_converter(prefer_engine="auto"):
"""
创建 SVG 转换器实例的便捷函数
Args:
prefer_engine (str): 首选转换引擎
Returns:
SVGConverter: 转换器实例
"""
try:
return SVGConverter(prefer_engine=prefer_engine)
except NameError:
raise ImportError("SVGConverter 类未正确导入,请检查依赖项安装")
def start_server(**kwargs):
"""
启动 FastMCP 服务的便捷函数
Args:
**kwargs: 传递给 mcp.run() 的参数
"""
try:
mcp.run(**kwargs)
except NameError:
raise ImportError("FastMCP 服务未正确导入,请检查依赖项安装")