Skip to main content
Glama
jneless
by jneless

tos_image_process

Process images stored in TOS buckets by applying operations like resize, format conversion, crop, rotate, and quality adjustment with specified parameters.

Instructions

图片处理(组合操作,支持多种处理参数)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bucket_nameYes存储桶名称
object_keyYes图片对象键名
processYes图片处理参数。参数格式通常为 'image/操作,参数',如: 'image/resize,h_100' 或 'image/format,jpg'。常用操作包括:resize(缩放),format(格式转换),quality(质量),crop(裁剪),rotate(旋转)等。
save_bucketYes保存的存储桶名称
save_keyYes保存的对象键名

Implementation Reference

  • Core handler function that executes the image processing using TOS SDK's get_object method with process, save_bucket, and save_object parameters for persistent processing.
    async def image_process(args: Dict[str, Any]) -> List[TextContent]:
        """图片处理(支持持久化)"""
        bucket_name = args["bucket_name"]
        object_key = args["object_key"]
        process = args["process"]
        save_bucket = args["save_bucket"]
        save_key = args["save_key"]
        
        try:
            # 使用官方SDK写法,通过save_bucket和save_object参数执行图片处理和持久化
            resp = tos_client.get_object(
                bucket=bucket_name,
                key=object_key,
                process=process,
                save_bucket=base64.b64encode(save_bucket.encode("utf-8")).decode("utf-8"),
                save_object=base64.b64encode(save_key.encode("utf-8")).decode("utf-8")
            )
            
            # 读取处理结果以确保处理完成
            processed_data = resp.read()
            
            # 等待一下确保回写完成
            import time
            time.sleep(1.0)
            
            # 生成处理后对象的预签名 URL
            download_url = tos_client.pre_signed_url(tos.HttpMethodType.Http_Method_Get, save_bucket, save_key, 3600)
            
            result = {
                "presigned_url": download_url.signed_url,
                "source_bucket": bucket_name,
                "source_key": object_key,
                "save_bucket": save_bucket,
                "save_key": save_key,
                "process": process,
                "processed_size": len(processed_data),
                "expires_in": 3600,
                "status": "processed"
            }
            return [TextContent(type="text", text=json.dumps(result, indent=2, ensure_ascii=False))]
        except Exception as e:
            return [TextContent(type="text", text=f"图片处理失败: {str(e)}")]
  • Tool registration in list_tools() including name, description, and input schema definition.
    Tool(
        name="tos_image_process",
        description="图片处理(组合操作,支持多种处理参数)",
        inputSchema={
            "type": "object",
            "properties": {
                "bucket_name": {
                    "type": "string",
                    "description": "存储桶名称"
                },
                "object_key": {
                    "type": "string",
                    "description": "图片对象键名"
                },
                "process": {
                    "type": "string",
                    "description": "图片处理参数。参数格式通常为 'image/操作,参数',如: 'image/resize,h_100' 或 'image/format,jpg'。常用操作包括:resize(缩放),format(格式转换),quality(质量),crop(裁剪),rotate(旋转)等。"
                },
                "save_bucket": {
                    "type": "string",
                    "description": "保存的存储桶名称"
                },
                "save_key": {
                    "type": "string",
                    "description": "保存的对象键名"
                }
            },
            "required": ["bucket_name", "object_key", "process", "save_bucket", "save_key"]
        }
    ),
  • Dispatch logic in call_tool() that routes tos_image_process calls to the image_process handler.
    elif name == "tos_image_process":
        return await image_process(arguments)
  • Import of the image_process handler function from handlers module.
        create_bucket, list_buckets, get_bucket_meta, delete_bucket,
        put_object, get_object, list_objects, delete_object,
        presigned_url, image_process, image_info,
        video_snapshot, video_info
    )

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/jneless/tos-mcp'

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