跳到内容

全局属性

versions

versions

一个对象,包含了 sharp、libvips 的版本号和(在使用预构建的二进制文件时)其依赖项的版本号。

示例

console.log(sharp.versions);

interpolators

interpolators : enum

一个对象,包含可用的插值器及其正确值

只读: true
属性

名称类型默认描述
neareststring”nearest”最近邻插值。仅适用于图像放大。
bilinearstring”bilinear”双线性插值。比三次插值快,但平滑效果较差。
bicubicstring”bicubic”三次插值(默认)。
locallyBoundedBicubicstring”lbb”LBB 插值。防止一些“锐度”,但通常会将性能降低一半。
nohalostring”nohalo”无晕影插值。防止锐度,但通常会将性能降低三分之一。
vertexSplitQuadraticBasisSplinestring”vsqbs”VSQBS 插值。防止放大时出现“阶梯化”。

format

format ⇒ Object

一个对象,包含表示可用输入和输出格式/方法的嵌套布尔值。

示例

console.log(sharp.format);

queue

queue

一个 EventEmitter,当任务被:

  • 排队,等待 libuv 提供工作线程
  • 完成时发出 change 事件

示例

sharp.queue.on('change', function(queueLength) {
console.log('队列中包含 ' + queueLength + ' 个任务');
});

cache

cache([options]) ⇒ Object

获取或在提供选项时设置 libvips 操作缓存的限制。 在限制更改后,缓存中的现有条目将被修剪。 该方法始终返回缓存统计信息, 有助于确定特定任务所需的工作内存量。

参数类型默认描述
[options]Object | booleantrue具有以下属性的对象,或布尔值,其中 true 使用默认缓存设置,false 则删除所有缓存
[options.memory]number50用于此缓存的最大内存(以 MB 为单位)
[options.files]number20最大打开文件数
[options.items]number100最大缓存操作数

示例

const stats = sharp.cache();

示例

sharp.cache( { items: 200 } );
sharp.cache( { files: 0 } );
sharp.cache(false);

concurrency

concurrency([concurrency]) ⇒ number

获取或在提供并发数时设置 libvips 应该使用的处理 每个图像 的最大线程数。这些线程来自 glib 管理的线程池,该管理帮助避免创建新线程的开销。

该方法始终返回当前并发值。

默认值为 CPU 核心数,但在不使用 jemalloc 的基于 glibc 的 Linux 系统上,默认值为 1,以帮助减少内存碎片。

值为 0 将重置为 CPU 核心数。

一些图像格式库会生成额外线程,例如 libaom 在编码 AVIF 图像时管理其自己的 4 个线程,这些线程与此处设置的值无关。

sharp 可以并行处理的最大图像数受 libuv 的 UV_THREADPOOL_SIZE 环境变量控制,默认值为 4。

https://nodejs.org/api/cli.html#uv_threadpool_sizesize

例如,默认情况下,有 8 个 CPU 核心的机器将并行处理 4 个图像,并每个图像使用最多 8 个线程,因此将会有最多 32 个并发线程。

返回: number - 并发数

参数类型
[concurrency]number

示例

const threads = sharp.concurrency(); // 4
sharp.concurrency(2); // 2
sharp.concurrency(0); // 4

counters

counters() ⇒ Object

提供对内部任务计数器的访问。

  • queue 是该模块已排队等待 libuv 提供其池中工作线程的任务数量。
  • process 是当前正在处理的调整大小任务数量。

示例

const counters = sharp.counters(); // { queue: 2, process: 4 }

simd

simd([simd]) ⇒ boolean

获取和设置 SIMD 矢量单元指令的使用。 需要 libvips 已编译为支持 highway。

通过利用 CPU 的 SIMD 矢量单元(例如 Intel SSE 和 ARM NEON),改善 resizeblursharpen 操作的性能。

参数类型默认
[simd]booleantrue

示例

const simd = sharp.simd();
// simd 是 `true`,如果当前启用了 highway 的运行时使用

示例

const simd = sharp.simd(false);
// 在运行时防止 libvips 使用 highway

block

block(options)

在运行时阻止 libvips 操作。

这与 VIPS_BLOCK_UNTRUSTED 环境变量相结合使用, 该变量设置后将阻止所有“不受信任”的操作。

: 0.32.4

参数类型描述
optionsObject
options.operationArray.<string>要阻止的 libvips 低级操作名称列表。

示例 (阻止所有 TIFF 输入)

sharp.block({
operation: ['VipsForeignLoadTiff']
});

unblock

unblock(options)

在运行时解除 libvips 操作的阻止。

这对于定义允许的操作列表非常有用。

: 0.32.4

参数类型描述
optionsObject
options.operationArray.<string>要解除阻止的 libvips 低级操作名称列表。

示例 (阻止除了文件系统中的 WebP 输入外的所有输入)

sharp.block({
operation: ['VipsForeignLoad']
});
sharp.unblock({
operation: ['VipsForeignLoadWebpFile']
});

示例 (阻止除 JPEG 和 PNG 从 Buffer 或 Stream 输入之外的所有输入)

sharp.block({
operation: ['VipsForeignLoad']
});
sharp.unblock({
operation: ['VipsForeignLoadJpegBuffer', 'VipsForeignLoadPngBuffer']
});