resize_image
Resize images to specific dimensions using scale, fit, cover, or thumb methods. Adjust image width and height while maintaining quality with TinyPNG compression.
Instructions
Resize an image file
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| height | Yes | The height to resize the image to | |
| imagePath | Yes | The ABSOLUTE path to the image file to resize | |
| method | No | The method describes the way your image will be resized. | fit |
| outputPath | No | The ABSOLUTE path to save the resized image file | |
| width | Yes | The width to resize the image to |
Implementation Reference
- src/tools.ts:213-241 (handler)The core handler function that loads the image using tinify, applies resize transformation with specified method, width, and height, determines output path if not provided, and saves the resized image.async function handleResizeImageTool({ imagePath, outputPath, width, height, method, }: { imagePath: string; outputPath?: string; width: number; height: number; method?: 'scale' | 'fit' | 'cover' | 'thumb'; }) { const source = tinify.fromFile(imagePath); const resized = source.resize({ method: method || 'fit', width, height, }); let dest = outputPath; if (!dest) { const dir = path.dirname(imagePath); const basename = path.basename(imagePath, path.extname(imagePath)); const ext = path.extname(imagePath).slice(1); dest = path.join(dir, `${basename}_${width}x${height}.${ext}`); } await resized.toFile(dest); }
- src/tools.ts:79-115 (schema)Defines the Tool schema for 'resize_image', including name, description, and detailed inputSchema with properties and requirements.const RESIZE_IMAGE_TOOL: Tool = { name: 'resize_image', description: 'Resize an image file', inputSchema: { type: 'object', properties: { imagePath: { type: 'string', description: 'The ABSOLUTE path to the image file to resize', example: '/Users/user/Downloads/image.jpg', }, outputPath: { type: 'string', description: 'The ABSOLUTE path to save the resized image file', example: '/Users/user/Downloads/image_thumbnail.jpg', }, method: { type: 'string', description: 'The method describes the way your image will be resized.', enum: ['scale', 'fit', 'cover', 'thumb'], default: 'fit', example: 'fit', }, width: { type: 'number', description: 'The width to resize the image to', example: 1024, }, height: { type: 'number', description: 'The height to resize the image to', example: 1024, }, }, required: ['imagePath', 'width', 'height'], }, };
- src/tools.ts:117-117 (registration)Registers the RESIZE_IMAGE_TOOL schema in the exported TOOLS array, likely used for tool listing in MCP server.export const TOOLS = [COMPRESS_LOCAL_IMAGE_TOOL, COMPRESS_REMOTE_IMAGE_TOOL, RESIZE_IMAGE_TOOL];
- src/tools.ts:280-299 (registration)Registers the resize_image handler function in TOOL_HANDLERS object, which wraps the core handler and returns MCP-compliant response.resize_image: async (request) => { await handleResizeImageTool( request.params.arguments as { imagePath: string; outputPath?: string; width: number; height: number; method: 'scale' | 'fit' | 'cover' | 'thumb'; }, ); return { content: [ { type: 'text', text: 'Image resized successfully', }, ], metadata: {}, }; },