用途:Sharp 用于在 Node.js 中处理和优化图像,适合构建图像流水线、生成多尺寸缩略图、处理上传图片以及批量压缩转换。
主要能力:支持调整尺寸(resize,含 cover、contain、fill、inside、outside 等 fit 选项与 position/gravity 定位)、格式转换(webp、avif、png、jpeg、toFormat)、裁剪与区域提取(extract、trim)、旋转翻转(rotate、flip、flop)、色彩调整(grayscale、tint、modulate、negate)、效果(blur、sharpen、normalize)、合成叠加(composite,可加水印)、扩展背景与展平透明(extend、flatten)。支持链式调用、流与 Buffer 输入输出,可读取元数据(metadata)和像素统计(stats)。
使用方式:安装 npm install sharp;以 import sharp from 'sharp' 引入。基本流程为 sharp(输入).操作().输出,例如 await sharp('input.jpg').resize(800, 600).toFormat('webp').toFile('output.webp');也可用 toBuffer() 输出 Buffer,或用 fs 流配合 pipe。可在 Next.js API 路由中接受参数并返回处理后的图像,也可结合 glob 做批量优化;上传场景可用 metadata() 校验格式后处理保存。
适用场景:站点图片优化与响应式尺寸、缩略图生成、格式转换与压缩、水印叠加、上传校验与批处理。
限制与注意:资料未提供官方定价、平台支持范围与性能基准的官方数据,具体以实际情况为准。大文件建议使用流以减少内存占用;低内存环境可设置 sharp.concurrency(1);建议缓存已处理图像而非每次请求重新处理;Sharp 默认按 EXIF 自动旋转。