我们可以使用 Sharp 获取图像的高度和宽度吗?

cla*_*ght 21 node.js sharp

我正在使用锐利来调整大部分图像的大小。因此,我通过保留其纵横比将它们的大小调整为 500px。另外,我想将高度调整为 500px,如果高度大于宽度,则自动调整宽度,反之亦然。为此,我需要从图像缓冲区获取图像高度。我知道有相当多的软件包可以做到这一点。但我希望我是否可以使用锐利缓冲区本身来做到这一点。

Ste*_*e L 38

是的,您可以使用以下函数获取清晰图像的宽度和高度metadata()

const image = sharp(file.buffer)
const metadata = await image.metadata()
console.log(metadata.width, metadata.height)
Run Code Online (Sandbox Code Playgroud)

您可以从以下位置获取更多信息metadata,这是文档:https ://sharp.pixelplumbing.com/api-input#metadata

  • 您不需要“等待” _Sharp_ 构造函数。 (3认同)
  • 我绝不是 javascript 专家,但文档说,我们可以 https://sharp.pixelplumbing.com/api-input#examples (2认同)
  • 如果你参考这个例子“constmetadata=awaitsharp(input).metadata();”,那么实际上我们在这里“await”函数“metadata()”,它也可以像“constimage”一样分两步工作= 尖锐(输入);const 元数据 = 等待 image.metadata();` (2认同)

jam*_*her 14

要获取输入图像标题中记录的尺寸:

const image = await sharp(file.buffer);
const metadata = await image.metadata();
console.log(metadata.width, metadata.height);
Run Code Online (Sandbox Code Playgroud)

不过,类似的操作image.resize(...)不会影响.metadata(). 要在对图像执行操作后获取尺寸,请使用.toBuffer({ resolveWithObject: true })

const image = await sharp(file.buffer);
const resizedImage = image.resize(640);
const { info } = await resizedImage.png().toBuffer({ resolveWithObject: true });
console.log(info.width, info.height);
Run Code Online (Sandbox Code Playgroud)