输入元数据
metadata([callback]) ⇒
Promise.<Object>|Sharp
快速访问(未缓存的)图像元数据,无需解码任何压缩的像素数据。
这从输入图像的头部读取。它不考虑任何将应用于输出图像的操作,例如调整大小或旋转。
响应中的尺寸将遵循
构造函数参数 的 page 和 pages 属性。
当未提供 callback 时,将返回一个 Promise。
format:用于解压图像数据的解码器名称,例如jpeg、png、webp、gif、svgsize:图像的总大小(以字节为单位),仅适用于 Stream 和 Buffer 输入width:宽度的像素数量(不考虑 EXIF 方向,见下面的示例)height:高度的像素数量(不考虑 EXIF 方向,见下面的示例)space:颜色空间解释的名称,例如srgb、rgb、cmyk、lab、b-w…channels:波段数量,例如3表示 sRGB,4表示 CMYKdepth:像素深度格式的名称,例如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或cm,如果存在hasProfile:布尔值,指示嵌入的 ICC 配置文件的存在hasAlpha:布尔值,指示 alpha 透明通道的存在orientation:EXIF Orientation 头的数字值,如果存在exif:包含原始 EXIF 数据的缓冲区,如果存在icc:包含原始 ICC 配置文件数据的缓冲区,如果存在iptc:包含原始 IPTC 数据的缓冲区,如果存在xmp:包含原始 XMP 数据的缓冲区,如果存在xmpAsString: 包含 XMP 数据的字符串,如果是有效的 UTF-8。tifftagPhotoshop:包含原始 TIFFTAG_PHOTOSHOP 数据的缓冲区,如果存在formatMagick:包含通过 *magick 加载的图像格式的字符串comments:表示 PNG 文本块的关键字/文本对数组(如果存在)。
| Param | Type | Description |
|---|---|---|
| [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(见第三个示例)。
| Param | Type | Description |
|---|---|---|
| [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();