Node.js 中的快速图像处理模块

Sharp 是一个图像处理模块,它使用 libvips 库为 Node.js 项目提供快速处理。

Sharp 是一个用于 Node.js 项目的快速处理图像模块,由 libvips 图像处理库提供支持。由于这一添加,夏普顾名思义具有高速处理能力,因为它只将未压缩图像数据的几个区域存储在内存中,从而释放了大部分使用的 CPU 能力和 L1/L2/L3 缓存

该库还确保不产生子进程并支持异步或等待进程。作为开源图像处理模块,Sharp 支持多种图像格式和未压缩的原始像素数据。为获得最佳性能,请确保您使用的是 Node.js 版本 10 及更高版本。

Previous Next

夏普入门

通过 NPM 安装 Sharp 的推荐方式。请使用以下命令进行安装。

通过 NPM 安装 Sharp

 npm install sharp 

通过免费的 JavaScript API 调整图像大小

开源锐利图书馆允许JavaScript个开发者按照程序调整图像。 夏普允许您将大型图像格式转换成与不同的Web应用程序兼容的小型格式。 在锐利图书馆的帮助下、Sharp的图像处理速度比其他图像格式变换器(如ImageMagick或GraphicsMagick)快4至5倍。 夏普确保图像质量不受Lancers取样模块的影响。

通过JavaScript读取和重读图像

const transformer = sharp()
  .resize({
    width: 200,
    height: 200,
    fit: sharp.fit.cover,
    position: sharp.strategy.entropy
  });
// Read image data from readableStream
// Write 200px square auto-cropped image data to writableStream
readableStream
  .pipe(transformer)
  .pipe(writableStream)

通过免费的 JavaScript API 进行图像处理

敏锐的库使软件开发者能够在JavaScript个框架中处理图像。 您可以进行图像定位、旋转、提取、校正和组成等操作。 Sharp与MacOS、Windows和Linux系统兼容、在使用Node。js版10及以上时不需要任何额外的设备。

通过JavaScript从一个地区提取图像

sharp(input)
  .extract({ left: leftOffsetPre, top: topOffsetPre, width: widthPre, height: heightPre })
  .resize(width, height)
  .extract({ left: leftOffsetPost, top: topOffsetPost, width: widthPost, height: heightPost })
  .toFile(output, function(err) {
    // Extract a region, resize, then extract from the resized image
  });

通过JavaScriptAPI旋转图像

const rotateThenResize = await sharp(input)
  .rotate(90)
  .resize({ width: 16, height: 8, fit: 'fill' })
  .toBuffer();
const resizeThenRotate = await sharp(input)
  .resize({ width: 16, height: 8, fit: 'fill' })
  .rotate(90)
  .toBuffer();

JavaScript个应用程序中的图像元数据工作

开源锐利图书馆包括全力支持在JavaScript个应用程序中使用图像元数据。 该库提供快速访问图像元数据而不解码任何压缩像素数据。 它包括支持图像大小、格式、高度、深度、密度、空间、水平、背景、出口、页面等重要属性。 您也可以很容易地访问像素生成的图像的每个信道、如最小、最大、总和、平均、锐度、等。

通过JavaScript进入图像元数据

const image = sharp(inputJpg);
image
  .metadata()
  .then(function(metadata) {
    return image
      .resize(Math.round(metadata.width / 2))
      .webp()
      .toBuffer();
  })
  .then(function(data) {
    // data contains a WebP image half the width and height of the original JPEG
  });
 中国人