sharp高性能 Node.js 图像处理模块
sharp 是一个高性能的 Node.js 模块,典型用例是将常见格式的大图像转换为较小的、对网络友好的 JPEG、PNG、WebP 和不同尺寸的 AVIF 图像。由于使用了 libvips 库,调整图像大小的速度通常比使用 ImageMagick 和 GraphicsMagick 快 4 到 5 倍。
颜色空间、嵌入的 ICC 配置文件和 alpha 透明通道都得到了正确处理,Lanczos 重采样可确保不会因速度而牺牲质量。除了图像调整大小外,还可以进行旋转、提取、合成和伽马校正等操作。
大多数运行 Node.js >= 12.13.0 的 macOS、Windows 和 Linux 系统不需要任何额外的安装或运行时依赖项。
例子
npm install sharp
const sharp = require('sharp');
回调
sharp(inputBuffer) .resize(320, 240) .toFile('output.webp', (err, info) => { ... });
Promise
sharp('input.jpg') .rotate() .resize(200) .jpeg({ mozjpeg: true }) .toBuffer() .then( data => { ... }) .catch( err => { ... });
Async/await
const semiTransparentRedPng = await sharp({ create: { width: 48, height: 48, channels: 4, background: { r: 255, g: 0, b: 0, alpha: 0.5 } } }) .png() .toBuffer();
Stream
const roundedCorners = Buffer.from( '<svg><rect x="0" y="0" width="200" height="200" rx="50" ry="50"/></svg>' ); const roundedCornerResizer = sharp() .resize(200, 200) .composite([{ input: roundedCorners, blend: 'dest-in' }]) .png(); readableStream .pipe(roundedCornerResizer) .pipe(writableStream);
评论