输入元数据
metadata([callback]) ⇒
Promise.<Object>|Sharp
快速访问(未缓存的)图像元数据,无需解码任何压缩的像素数据。
这些信息是从输入图像的头部读取的。
它不考虑任何将应用于输出图像的操作,
例如调整大小或旋转。
响应中的尺寸将遵循
构造函数参数中的 page 和 pages 属性。
如果没有提供 callback,则返回一个 Promise。
format: 用于解析图像的解码器名称,例如jpeg、png、webp、gif、svg、heif、tiffmediaType: 媒体类型(MIME 类型),例如image/jpeg、image/png、image/svg+xml、image/avifsize: 图像总大小(字节),仅适用于 Stream 和 Buffer 输入width: 像素宽度(不考虑 EXIF 方向,请参见下面示例)height: 像素高度(不考虑 EXIF 方向,请参见下面示例)space: 颜色空间解释名称,例如srgb、rgb、cmyk、lab、b-w…channels: 波段数量,例如 sRGB 为3,CMYK 为4depth: 像素深度格式名称,例如uchar、char、ushort、float…density: 每英寸像素数(DPI),如果存在chromaSubsampling: 包含 JPEG 色度抽样的字符串,RGB 为4:2:0或4:4:4,CMYK 为4:2:0:4或4:4:4:4isProgressive: 布尔值,表示图像是否使用渐进式扫描进行隔行isPalette: 布尔值,表示图像是否基于调色板(GIF、PNG)。bitsPerSample: 每个通道的每个样本位数(GIF、PNG、HEIF)。pages: 图像中包含的页/帧数量,支持 TIFF、HEIF、PDF、动画 GIF 和动画 WebPpageHeight: 多页图像中每一页的像素高度。loop: 动画图像循环的次数,零表示连续循环。delay: 动画图像中每页之间的延迟(毫秒),以整数数组形式提供。pagePrimary: HEIF 图像中的主页面编号levels: 多级图像中每个级别的详细信息,以对象数组形式提供,需要编译时启用 OpenSlide 支持的 libvipssubifds: OME-TIFF 图像中的子图像文件目录数量background: 默认背景颜色,如果存在,适用于 PNG(bKGD)和 GIF 图像compression: 用于压缩 HEIF 文件的编码器,av1(AVIF)或hevc(HEIC)resolutionUnit: 分辨率(密度)单位,如果存在,则为inch或cmhasProfile: 布尔值,表示是否存在嵌入的 ICC 配置文件hasAlpha: 布尔值,表示是否存在 alpha 透明通道orientation: EXIF Orientation 头的数值,如果存在exif: 包含原始 EXIF 数据的 Buffer,如果存在icc: 包含原始 ICC 配置文件数据的 Buffer,如果存在iptc: 包含原始 IPTC 数据的 Buffer,如果存在xmp: 包含原始 XMP 数据的 Buffer,如果存在xmpAsString: 包含 XMP 数据的字符串,如果为有效 UTF-8。tifftagPhotoshop: 包含原始 TIFFTAG_PHOTOSHOP 数据的 Buffer,如果存在formatMagick: 通过 *magick 加载的图像的格式字符串comments: 表示 PNG 文本块的关键字/文本对数组,如果存在。gainMap.image: HDR 增益映射(如果存在),为压缩的 JPEG 图像。
| 参数 | 类型 | 描述 |
|---|---|---|
| [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 是宽度和高度均为原 JPEG 图像一半的 WebP 图像 });示例
// 获取考虑 EXIF 方向的尺寸。const { autoOrient } = await sharp(input).metadata();const { width, height } = autoOrient;stats([callback]) ⇒
Promise.<Object>
访问图像中每个通道的像素衍生统计信息。当未提供 callback 时,将返回一个 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-bin 3D 直方图的最主导 sRGB 颜色的对象。
注意:统计信息基于原始输入图像。对图像执行的任何操作必须先写入缓冲区,才可在结果上运行 stats(见第三个示例)。
| 参数 | 类型 | 描述 |
|---|---|---|
| [callback] | function | 带有参数 (err, stats) 的回调函数 |
示例
const image = sharp(inputJpg);image .stats() .then(function(stats) { // stats 包含按通道的统计数组和 isOpaque 值 });示例
const { entropy, sharpness, dominant } = await sharp(input).stats();const { r, g, b } = dominant;示例
const image = sharp(input);// 存储中间结果const part = await image.extract(region).toBuffer();// 新建实例以获取提取区域的统计信息const stats = await sharp(part).stats();