输入元数据

元数据Metadata

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

这是从输入图像的头信息中获取的。它不包括要应用于输出图像的操作,例如调整大小。

未提供callback时返回一个Promise

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

参数

  • callback Function ? 用参数调用 (err, metadata)

例子

  1. const metadata = await sharp(input).metadata();
  1. const image = sharp(inputJpg);
  2. image
  3. .metadata()
  4. .then(function(metadata) {
  5. return image
  6. .resize(Math.round(metadata.width / 2))
  7. .webp()
  8. .toBuffer();
  9. })
  10. .then(function(data) {
  11. // data contains a WebP image half the width and height of the original JPEG
  12. });
  1. // Based on EXIF rotation metadata, get the right-side-up width and height:
  2. const size = getNormalSize(await sharp(input).metadata());
  3. function getNormalSize({ width, height, orientation }) {
  4. return orientation || 0 >= 5
  5. ? { width: height, height: width }
  6. : { width, height };
  7. }

返回 (Promise <Object > | Sharp)

统计信息Stat

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

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

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

参数

  • callback Function ? 用参数调用 (err, metadata)

例子

  1. const image = sharp(inputJpg);
  2. image
  3. .stats()
  4. .then(function(stats) {
  5. // stats contains the channel-wise statistics array and the isOpaque value
  6. });
  1. const { entropy, sharpness, dominant } = await sharp(input).stats();
  2. const { r, g, b } = dominant;
  1. const image = sharp(input);
  2. // store intermediate result
  3. const part = await image.extract(region).toBuffer();
  4. // create new instance to obtain statistics of extracted region
  5. const stats = await sharp(part).stats();

返回 Promise <Object >