调整图片大小
resize¶
Resize image to width
x height
.
By default, the resized image is centre cropped to the exact size specified.
Possible kernels are:
nearest
: Use nearest neighbour interpolation.cubic
: Use a Catmull-Rom spline.lanczos2
: Use a Lanczos kernel witha=2
.lanczos3
: Use a Lanczos kernel witha=3
(the default).
参数
width
Number? pixels wide the resultant image should be. Usenull
orundefined
to auto-scale the width to match the height.height
Number? pixels high the resultant image should be. Usenull
orundefined
to auto-scale the height to match the width.options
Object?
示例
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 ofsharp.gravity
to crop to an edge/corner orsharp.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 ofsharp.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, defaulttrue
)
返回 Sharp