教程菜单 本页目录

metadata

metadata([callback]) ⇒ Promise.<Object> | Sharp

快速访问(未缓存的)图像元数据,无需解码任何压缩像素数据。

这是从输入图像的标题中读取的。它不考虑要应用于输出图像的任何操作,例如调整大小或旋转。

响应中的尺寸将尊重构造函数参数的页面和页面属性。

当未提供回调时,将返回 Promise。

  • format: 用于解压缩图像数据的解码器名称,例如   jpeg, png, webp, gif, svg
  • size: 图像的总大小(以字节为单位),仅适用于流和缓冲区输入
  • width: 像素宽度(不考虑 EXIF 方向,见下面的示例)
  • height: 像素高度(不考虑 EXIF 方向,见下面的示例)
  • space: 颜色空间解释的名称,例如 srgb, rgb, cmyk, lab, b-w ...
  • channels: 波段数,例如 sRGB 为 3,CMYK 为 4
  • depth: 像素深度格式的名称,例如 uchar, char, ushort, float ...
  • density: 每英寸像素数 (DPI)(如果存在)
  • chromaSubsampling: 包含 JPEG 色度子采样的字符串,RGB 为 4:2:0 或 4:4:4,CMYK 为 4:2:0:4 或 4:4:4:4
  • isProgressive: 表示图像是否使用逐行扫描进行隔行扫描的布尔值
  • pages: 图像中包含的页面/帧数,支持 TIFF、HEIF、PDF、动画 GIF 和动画 WebP
  • pageHeight: 多页图像中每页的高度像素数。
  • paletteBitDepth: 基于调色板的图像(GIF、PNG)的位深度。
  • loop: 动画图像的循环次数,零表示连续循环。
  • delay: 动画图像中每页之间的延迟(以毫秒为单位),以整数数组形式提供。
  • pagePrimary: HEIF 图像中主要页面的编号
  • levels: 以对象数组形式提供的多级图像中每个级别的详细信息,需要使用支持 OpenSlide 编译的 libvips
  • subifds: OME-TIFF 图像中的子图像文件目录数
  • background: PNG (bKGD) 和 GIF 图像的默认背景颜色(如果存在)为 RGB 对象或单个灰度值
  • compression: 用于压缩 HEIF 文件的编码器,av1 (AVIF) 或 hevc (HEIC)
  • resolutionUnit: 分辨率(密度)单位,英寸或厘米(如果存在)
  • hasProfile: 表示存在嵌入式 ICC 的布尔值配置文件
  • hasAlpha: 表示 alpha 透明通道存在的布尔值
  • orientation: EXIF 方向标头的数值(如果存在)
  • exif: 包含原始 EXIF 数据的缓冲区(如果存在)
  • icc: 包含原始 ICC 配置文件数据的缓冲区(如果存在)
  • iptc: 包含原始 IPTC 数据的缓冲区(如果存在)
  • xmp: 包含原始 XMP 数据的缓冲区(如果存在)
  • tifftagPhotoshop: 包含原始 TIFFTAG_PHOTOSHOP 数据的缓冲区(如果存在)
  • formatMagick: 包含通过加载的图像格式的字符串*magick
参数类型描述
[callback]function使用参数 (err, metadata)

示例

const metadata = await sharp(input).metadata();

示例

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
  });

示例

// Based on EXIF rotation metadata, get the right-side-up width and height:

const size = getNormalSize(await sharp(input).metadata());

function getNormalSize({ width, height, orientation }) {
  return (orientation || 0) >= 5
    ? { width: height, height: width }
    : { width, height };
}

stats

stats([callback]) ⇒ Promise.<Object>

访问图像中每个通道的像素派生图像统计信息。未提供回调时,将返回 Promise。

  • channels: 图像中每个通道的通道统计信息数组。每个通道统计数据包含
    • min (通道中的最小值)
    • max (通道中的最大值)
    • sum (通道中所有值的总和)
    • squaresSum (通道中平方值的总和)
    • mean (通道中值的平均值)
    • stdev (通道中值的标准差)
    • minX (最小值所在像素之一的 x 坐标)
    • minY (最小值所在像素之一的 y 坐标)
    • maxX (最大值所在像素之一的 x 坐标)所在位置)
    • maxY (最大值所在像素之一的 y 坐标)
  • isOpaque: 图像是否完全不透明?如果图像没有 alpha 通道或每个像素都完全不透明,则为 true。
  • entropy: 基于直方图的灰度熵估计,丢弃 alpha 通道(如果有)。
  • sharpness: 基于拉普拉斯卷积的标准偏差的灰度锐度估计,丢弃 alpha 通道(如果有)。
  • dominant: 基于 4096 箱 3D 直方图包含最主要的 sRGB 颜色的对象。

注意:统计数据来自原始输入图像。对图像执行的任何操作都必须先写入缓冲区,以便对结果运行统计(参见第三个示例)。

参数类型描述
[callback]function使用参数 (err, stats)

示例

const image = sharp(inputJpg);
image
  .stats()
  .then(function(stats) {
     // stats contains the channel-wise statistics array and the isOpaque value
  });

示例

const { entropy, sharpness, dominant } = await sharp(input).stats();
const { r, g, b } = dominant;

示例

const image = sharp(input);
// store intermediate result
const part = await image.extract(region).toBuffer();
// create new instance to obtain statistics of extracted region
const stats = await sharp(part).stats();
本页目录