Skip to main content
Glama

add_border

Add customizable borders to images with options for width, color, style, and corner radius to enhance visual presentation.

Instructions

为图片添加边框效果

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
image_sourceYes图片源,可以是文件路径或base64编码的图片数据
border_widthNo边框宽度(像素)
border_colorNo边框颜色,十六进制格式如 #000000(黑色)#000000
border_styleNo边框样式:solid(实线)、dashed(虚线)、dotted(点线)solid
corner_radiusNo圆角半径(像素),0为直角
output_formatNo输出格式:PNG、JPEG、WEBP 等PNG

Implementation Reference

  • Core asynchronous handler function that implements the add_border tool logic. Loads image, validates parameters, creates bordered image with solid, rounded, or shadow styles using PIL, and returns base64 encoded result.
    async def add_border(arguments: Dict[str, Any]) -> List[TextContent]: """ 为图片添加边框效果 Args: arguments: 包含图片源和边框参数的字典 Returns: List[TextContent]: 处理结果 """ try: # 参数验证 image_source = arguments.get("image_source") ensure_valid_image_source(image_source) border_width = arguments.get("border_width", 10) border_color = arguments.get("border_color", "#000000") border_style = arguments.get("border_style", "solid") corner_radius = arguments.get("corner_radius", 10) output_format = arguments.get("output_format", DEFAULT_IMAGE_FORMAT) # 验证参数 validate_numeric_range(border_width, 1, 100, "border_width") validate_color_hex(border_color) validate_numeric_range(corner_radius, 0, 50, "corner_radius") # 加载图片 processor = ImageProcessor() image = processor.load_image(image_source) # 创建带边框的新图片 new_width = image.width + 2 * border_width new_height = image.height + 2 * border_width if border_style == "rounded": # 圆角边框 bordered_image = Image.new("RGBA", (new_width, new_height), border_color) # 创建圆角遮罩 mask = Image.new("L", (new_width, new_height), 0) draw = ImageDraw.Draw(mask) draw.rounded_rectangle( [0, 0, new_width, new_height], radius=corner_radius, fill=255 ) # 应用遮罩 bordered_image.putalpha(mask) # 粘贴原图片 if image.mode != "RGBA": image = image.convert("RGBA") bordered_image.paste(image, (border_width, border_width), image) elif border_style == "shadow": # 阴影边框 bordered_image = Image.new("RGBA", (new_width + 10, new_height + 10), (0, 0, 0, 0)) # 创建阴影 shadow = Image.new("RGBA", (new_width, new_height), border_color + "80") shadow = shadow.filter(ImageFilter.GaussianBlur(radius=5)) bordered_image.paste(shadow, (10, 10), shadow) # 粘贴原图片 if image.mode != "RGBA": image = image.convert("RGBA") bordered_image.paste(image, (border_width, border_width), image) else: # 实心边框 bordered_image = Image.new("RGB", (new_width, new_height), border_color) bordered_image.paste(image, (border_width, border_width)) # 转换为base64 output_info = processor.output_image(bordered_image, "border", output_format) return [TextContent( type="text", text=json.dumps({ "success": True, "message": f"成功添加{border_style}边框效果", "data": { **output_info, "metadata": { "original_size": f"{image.width}x{image.height}", "new_size": f"{bordered_image.width}x{bordered_image.height}", "border_width": border_width, "border_color": border_color, "border_style": border_style, "format": output_format } } }, ensure_ascii=False) )] except ValidationError as e: return [TextContent( type="text", text=json.dumps({ "success": False, "error": f"参数验证失败: {str(e)}" }, ensure_ascii=False) )] except Exception as e: return [TextContent( type="text", text=json.dumps({ "success": False, "error": f"添加边框失败: {str(e)}" }, ensure_ascii=False) )]
  • main.py:490-516 (registration)
    Registers the 'add_border' tool with the FastMCP server using @mcp.tool() decorator. Defines input schema through Annotated parameters and wraps the async handler from effects.py with safe_run_async.
    @mcp.tool() def add_border( image_source: Annotated[str, Field(description="图片源,可以是文件路径或base64编码的图片数据")], border_width: Annotated[int, Field(description="边框宽度(像素)", ge=1, default=10)], border_color: Annotated[str, Field(description="边框颜色,十六进制格式如 #000000(黑色)", default="#000000")], border_style: Annotated[str, Field(description="边框样式:solid(实线)、dashed(虚线)、dotted(点线)", default="solid")], corner_radius: Annotated[int, Field(description="圆角半径(像素),0为直角", ge=0, default=10)], output_format: Annotated[str, Field(description="输出格式:PNG、JPEG、WEBP 等", default="PNG")] ) -> str: """为图片添加边框效果""" try: arguments = { "image_source": image_source, "border_width": border_width, "border_color": border_color, "border_style": border_style, "corner_radius": corner_radius, "output_format": output_format } result = safe_run_async(effects_add_border(arguments)) return result[0].text except Exception as e: return json.dumps({ "success": False, "error": f"添加边框失败: {str(e)}" }, ensure_ascii=False, indent=2)
  • Detailed JSON schema definition for the add_border tool input parameters, defined within get_effect_tools() function, though not directly used in registration.
    Tool( name="add_border", description="为图片添加边框效果", inputSchema={ "type": "object", "properties": { "image_source": { "type": "string", "description": "图片源(文件路径或base64编码)" }, "border_width": { "type": "integer", "description": "边框宽度(像素)", "minimum": 1, "maximum": 100, "default": 10 }, "border_color": { "type": "string", "description": "边框颜色(十六进制格式,如#FF0000)", "default": "#000000" }, "border_style": { "type": "string", "description": "边框样式", "enum": ["solid", "rounded", "shadow"], "default": "solid" }, "corner_radius": { "type": "integer", "description": "圆角半径(仅当border_style为rounded时有效)", "minimum": 0, "maximum": 50, "default": 10 }, "output_format": { "type": "string", "description": "输出格式", "enum": ["PNG", "JPEG", "WEBP"], "default": "PNG" } }, "required": ["image_source"] } ),

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/duke0317/ps-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server