convert_format
Convert images between formats like PNG, JPEG, WEBP, BMP, TIFF, and GIF. Specify image source and target format to process images for compatibility or optimization needs.
Instructions
转换图片格式
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| image_source | Yes | 图片源,可以是文件路径或base64编码的图片数据 | |
| target_format | Yes | 目标格式:PNG、JPEG、WEBP、BMP、TIFF、GIF 等 | |
| quality | No | 图片质量,范围 1-100,仅对 JPEG 格式有效 |
Implementation Reference
- tools/basic.py:276-333 (handler)Core handler function implementing the image format conversion logic using ImageProcessor, including validation, processing, and JSON response.async def convert_format(image_source: str, target_format: str, quality: int = 95) -> list[TextContent]: """ 转换图片格式 Args: image_source: 图片源(文件路径或base64编码数据) target_format: 目标格式 quality: 图片质量 Returns: 转换后的图片文件引用 """ try: # 验证参数 if not image_source or not target_format: raise ValidationError("图片源和目标格式不能为空") if not validate_image_format(target_format): raise ValidationError(f"不支持的目标格式: {target_format}") if not (1 <= quality <= 100): raise ValidationError("图片质量必须在1-100之间") # 加载图片 image = processor.load_image(image_source) # 获取原始格式 original_format = image.format or 'PNG' # 输出转换后的图片 output_info = processor.output_image(image, f"convert_to_{target_format.lower()}", target_format, quality) result = { "success": True, "message": f"图片格式转换成功: {original_format} -> {target_format}", "data": { **output_info, "original_format": original_format, "target_format": target_format, "quality": quality } } return [TextContent(type="text", text=json.dumps(result, ensure_ascii=False))] except ValidationError as e: error_result = { "success": False, "error": f"参数验证失败: {str(e)}" } return [TextContent(type="text", text=json.dumps(error_result, ensure_ascii=False))] except Exception as e: error_result = { "success": False, "error": f"格式转换失败: {str(e)}" } return [TextContent(type="text", text=json.dumps(error_result, ensure_ascii=False))]
- main.py:152-167 (registration)MCP tool registration using @mcp.tool() decorator, defining input parameters with descriptions and constraints, and delegating to the basic handler.@mcp.tool() def convert_format( image_source: Annotated[str, Field(description="图片源,可以是文件路径或base64编码的图片数据")], target_format: Annotated[str, Field(description="目标格式:PNG、JPEG、WEBP、BMP、TIFF、GIF 等")], quality: Annotated[int, Field(description="图片质量,范围 1-100,仅对 JPEG 格式有效", ge=1, le=100, default=95)] ) -> str: """转换图片格式""" try: result = safe_run_async(basic_convert_format(image_source, target_format, quality)) return result[0].text except Exception as e: return json.dumps({ "success": False, "error": f"转换图片格式失败: {str(e)}" }, ensure_ascii=False, indent=2)
- tools/basic.py:70-94 (schema)Input schema definition for the convert_format tool within the Tool object returned by get_basic_tools(). Note: actual registration uses Annotated fields in main.py.Tool( name="convert_format", description="转换图片格式", inputSchema={ "type": "object", "properties": { "image_data": { "type": "string", "description": "图片数据(base64编码)" }, "target_format": { "type": "string", "description": "目标格式(PNG, JPEG, BMP, TIFF, WEBP)" }, "quality": { "type": "integer", "description": "图片质量(1-100,仅对JPEG有效)", "minimum": 1, "maximum": 100, "default": 95 } }, "required": ["image_data", "target_format"] } )