mcpField
S
sharp

sharp

github.com/aidotnetCreative & media8536 installsUpdated 39w ago
Repository

About sharp

sharp is a high-performance image-processing library for developers working with images in code. It handles resizing, format conversion, and other manipulations, and also supports stream-based processing.

Key features

  1. 01Resize images
  2. 02Convert to WebP and AVIF
  3. 03Rotate and flip images
  4. 04Blur and sharpen images
  5. 05Add watermarks and create thumbnails
  6. 06Process images through streams

Use cases

  1. 01Create images at specified dimensions
  2. 02Convert images to modern formats
  3. 03Generate thumbnails at multiple sizes
  4. 04Process large image streams

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/aidotnet/moyucode --skill sharp

After installing, type/sharpin Claude Code to confirm it loaded.

Details

From the project README

Sharp Tool

Description

High-performance image processing for resizing, converting, and manipulating images.

Source

Installation

npm install sharp

Usage Examples

Resize Image
import sharp from 'sharp';

// Resize to specific dimensions
await sharp('input.jpg')
  .resize(800, 600)
  .toFile('output.jpg');

// Resize with aspect ratio preserved
await sharp('input.jpg')
  .resize(800, null)  // Width 800, auto height
  .toFile('output.jpg');

// Resize with fit options
await sharp('input.jpg')
  .resize(800, 600, {
    fit: 'cover',      // cover, contain, fill, inside, outside
    position: 'center' // center, top, right, bottom, left
  })
  .toFile('output.jpg');
Convert Format
// Convert to WebP
await sharp('input.jpg')
  .webp({ quality: 80 })
  .toFile('output.webp');

// Convert to AVIF (modern format)
await sharp('input.jpg')
  .avif({ quality: 60 })
  .toFile('output.avif');

// Convert to PNG with transparency
await sharp('input.jpg')
  .png({ compressionLevel: 9 })
  .toFile('output.png');
Image Manipulation
// Rotate and flip
await sharp('input.jpg')
  .rotate(90)
  .flip()
  .toFile('output.jpg');

// Blur and sharpen
await sharp('input.jpg')
  .blur(5)
  .sharpen()
  .toFile('output.jpg');

// Grayscale and tint
await sharp('input.jpg')
  .grayscale()
  .tint({ r: 255, g: 128, b: 0 })
  .toFile('output.jpg');

// Crop
await sharp('input.jpg')
  .extract({ left: 100, top: 100, width: 500, height: 300 })
  .toFile('output.jpg');
Add Watermark
async function addWatermark(input: string, watermark: string, output: string) {
  const image = sharp(input);
  const { width, height } = await image.metadata();
  
  // Resize watermark
  const watermarkBuffer = await sharp(watermark)
    .resize(Math.round(width! * 0.2))
    .toBuffer();
  
  await image
    .composite([{
      input: watermarkBuffer,
      gravity: 'southeast',
      blend: 'over',
    }])
    .toFile(output);
}
Generate Thumbnails
async function generateThumbnails(input: string, sizes: number[]) {
  const image = sharp(input);
  
  await Promise.all(sizes.map(size =>
    image
      .clone()
      .resize(size, size, { fit: 'cover' })
      .jpeg({ quality: 80 })
      .toFile(`thumb-${size}.jpg`)
  ));
}

// Usage
await generateThumbnails('photo.jpg', [64, 128, 256, 512]);
Stream Processing
import { createReadStream, createWriteStream } from 'fs';

// Process large images with streams
createReadStream('large-input.jpg')
  .pipe(sharp().resize(1920, 1080).jpeg({ quality: 85 }))
  .pipe(createWriteStream('output.jpg'));

Tags

image, resize, convert, thumbnail, processing

Compatibility

  • Codex: ✅
  • Claude Code: ✅

Comments

Markdown supported