调整图片大小

resize

Resize image to width x height. By default, the resized image is centre cropped to the exact size specified.

Possible kernels are:

参数

  • width Number? pixels wide the resultant image should be. Use null or undefined to auto-scale the width to match the height.
  • height Number? pixels high the resultant image should be. Use null or undefined to auto-scale the height to match the width.
  • options Object?
    • options.kernel String the kernel to use for image reduction. (optional, default 'lanczos3')
    • options.fastShrinkOnLoad Boolean take greater advantage of the JPEG and WebP shrink-on-load feature, which can lead to a slight moiré pattern on some images. (optional, default true)

示例

sharp(inputBuffer)
  .resize(200, 300, {
    kernel: sharp.kernel.nearest
  })
  .background('white')
  .embed()
  .toFile('output.tiff')
  .then(function() {
    // output.tiff is a 200 pixels wide and 300 pixels high image
    // containing a nearest-neighbour scaled version, embedded on a white canvas,
    // of the image data in inputBuffer
  });
  • Throws Error Invalid parameters

返回 Sharp

crop

Crop the resized image to the exact size specified, the default behaviour.

Possible attributes of the optional sharp.gravity are north, northeast, east, southeast, south, southwest, west, northwest, center and centre.

The experimental strategy-based approach resizes so one dimension is at its target length then repeatedly ranks edge regions, discarding the edge with the lowest score based on the selected strategy.

  • entropy: focus on the region with the highest Shannon entropy.
  • attention: focus on the region with the highest luminance frequency, colour saturation and presence of skin tones.

参数

  • crop String A member of sharp.gravity to crop to an edge/corner or sharp.strategy to crop dynamically. (optional, default 'centre')

示例

const transformer = sharp()
  .resize(200, 200)
  .crop(sharp.strategy.entropy)
  .on('error', function(err) {
    console.log(err);
  });
// Read image data from readableStream
// Write 200px square auto-cropped image data to writableStream
readableStream.pipe(transformer).pipe(writableStream);
  • Throws Error Invalid parameters

返回 Sharp

embed

Preserving aspect ratio, resize the image to the maximum width or height specified then embed on a background of the exact width and height specified.

If the background contains an alpha value then WebP and PNG format output images will contain an alpha channel, even when the input image does not.

参数

  • embed String A member of sharp.gravity to embed to an edge/corner. (optional, default 'centre')

示例

sharp('input.gif')
  .resize(200, 300)
  .background({r: 0, g: 0, b: 0, alpha: 0})
  .embed()
  .toFormat(sharp.format.webp)
  .toBuffer(function(err, outputBuffer) {
    if (err) {
      throw err;
    }
    // outputBuffer contains WebP image data of a 200 pixels wide and 300 pixels high
    // containing a scaled version, embedded on a transparent canvas, of input.gif
  });
  • Throws Error Invalid parameters

返回 Sharp

max

Preserving aspect ratio, resize the image to be as large as possible while ensuring its dimensions are less than or equal to the width and height specified.

Both width and height must be provided via resize otherwise the behaviour will default to crop.

示例

sharp(inputBuffer)
  .resize(200, 200)
  .max()
  .toFormat('jpeg')
  .toBuffer()
  .then(function(outputBuffer) {
    // outputBuffer contains JPEG image data no wider than 200 pixels and no higher
    // than 200 pixels regardless of the inputBuffer image dimensions
  });

返回 Sharp

min

Preserving aspect ratio, resize the image to be as small as possible while ensuring its dimensions are greater than or equal to the width and height specified.

Both width and height must be provided via resize otherwise the behaviour will default to crop.

返回 Sharp

ignoreAspectRatio

Ignoring the aspect ratio of the input, stretch the image to the exact width and/or height provided via resize.

返回 Sharp

withoutEnlargement

Do not enlarge the output image if the input image width or height are already less than the required dimensions. This is equivalent to GraphicsMagick's > geometry option: "change the dimensions of the image only if its width or height exceeds the geometry specification".

The default behaviour before function call is false, meaning the image will be enlarged.

参数

  • withoutEnlargement Boolean (optional, default true)

返回 Sharp