""" 图片配置验证器 验证图片元素的 fit、background、dpi 等参数。 """ from typing import List from validators.result import ValidationIssue import re def validate_fit_value(fit: str) -> List[ValidationIssue]: """ 验证 fit 参数值 Args: fit: fit 参数值 Returns: 验证问题列表 """ issues = [] valid_fits = ['stretch', 'contain', 'cover', 'center'] if fit not in valid_fits: issues.append(ValidationIssue( level="ERROR", message=f"无效的 fit 值: {fit} (支持: {', '.join(valid_fits)})", location="", code="INVALID_FIT_VALUE" )) return issues def validate_background_color(color: str) -> List[ValidationIssue]: """ 验证背景颜色格式 Args: color: 颜色字符串 Returns: 验证问题列表 """ issues = [] # 检查类型 if not isinstance(color, str): issues.append(ValidationIssue( level="ERROR", message=f"无效的背景颜色格式: {color} (应为 #RRGGBB 或 #RGB)", location="", code="INVALID_COLOR_FORMAT" )) return issues pattern = r'^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$' if not re.match(pattern, color): issues.append(ValidationIssue( level="ERROR", message=f"无效的背景颜色格式: {color} (应为 #RRGGBB 或 #RGB)", location="", code="INVALID_COLOR_FORMAT" )) return issues def validate_dpi_value(dpi: int) -> List[ValidationIssue]: """ 验证 DPI 值 Args: dpi: DPI 值 Returns: 验证问题列表 """ issues = [] # 检查类型 if not isinstance(dpi, int): issues.append(ValidationIssue( level="ERROR", message=f"DPI 值必须是整数: {dpi}", location="", code="INVALID_DPI_TYPE" )) return issues if dpi < 72 or dpi > 300: issues.append(ValidationIssue( level="WARNING", message=f"DPI 值可能不合适: {dpi} (建议范围: 72-300)", location="", code="DPI_OUT_OF_RANGE" )) return issues