image_scale_by_size
Resizes images stored in Qiniu Cloud by specifying width or height while maintaining aspect ratio, returning a URL for direct access to the scaled image.
Instructions
Image scaling tool that resizes images based on a specified width or height and returns information about the scaled image. The information includes the object_url of the scaled image, which users can directly use for HTTP GET requests to retrieve the image content or open in a browser to view the file. The image must be stored in a Qiniu Cloud Bucket. Supported original image formats: psd, jpeg, png, gif, webp, tiff, bmp, avif, heic. Image width and height cannot exceed 30,000 pixels, and total pixels cannot exceed 150 million.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| object_url | Yes | The URL of the image. This can be a URL obtained via the GetObjectURL tool or a URL generated by other Fop tools. Length Constraints: Minimum length of 1. | |
| width | No | Specifies the width for image scaling. The image will be scaled to the specified width, and the height will be adjusted proportionally. | |
| height | No | Specifies the height for image scaling. The image will be scaled to the specified height, and the width will be adjusted proportionally. |
Implementation Reference
- The core handler function for the image_scale_by_size tool. It takes object_url (required), optional width and height, constructs the Qiniu FOP string for thumbnail scaling, adds the processing function to the URL, and returns the new object_url.def image_scale_by_size( self, **kwargs ) -> list[types.TextContent]: object_url = kwargs.get("object_url", "") width = kwargs.get("width", "") height = kwargs.get("height", "") if object_url is None or len(object_url) == 0: return [types.TextContent(type="text", text="object_url is required")] func = f"{width}x{height}" if len(func) == 1: return [ types.TextContent( type="text", text="At least one width or height must be set" ) ] func = f"imageMogr2/thumbnail/{func}" object_url = utils.url_add_processing_func(auth=self.auth, url=object_url, func=func) return [ types.TextContent( type="text", text=str( { "object_url": object_url, } ), ) ]
- Input schema for the image_scale_by_size tool, defining object_url as required string, and optional integer width/height with minimum 1, including descriptions.inputSchema={ "type": "object", "properties": { "object_url": { "type": "string", "description": _OBJECT_URL_DESC }, "width": { "type": "integer", "description": "Specifies the width for image scaling. The image will be scaled to the specified width, and the height will be adjusted proportionally.", "minimum": 1 }, "height": { "type": "integer", "description": "Specifies the height for image scaling. The image will be scaled to the specified height, and the width will be adjusted proportionally.", "minimum": 1 }, }, "required": ["object_url"] },
- src/mcp_server/core/media_processing/tools.py:258-268 (registration)The register_tools function instantiates _ToolImpl and uses tools.auto_register_tools to register the image_scale_by_size handler along with other media processing tools.def register_tools(cfg: config.Config, cli: MediaProcessingService): tool_impl = _ToolImpl(cfg, cli) tools.auto_register_tools( [ tool_impl.image_scale_by_percent, tool_impl.image_scale_by_size, tool_impl.image_round_corner, tool_impl.image_info, ] )