教程菜单 本页目录

全局属性

versions

versions

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

示例

console.log(sharp.versions);

interpolators

interpolators : enum

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

只读: true

属性

名称类型默认描述
neareststring"nearest"最近邻插值。仅适用于图像放大。
bilinearstring"bilinear"双线性插值。比双三次插值更快,但结果不太平滑。
bicubicstring"bicubic"双三次插值(默认)。
locallyBoundedBicubicstring"lbb"LBB 插值。可防止一些“锐度”,但通常会使性能降低 2 倍。
nohalostring"nohalo"无光晕插值。防止锐度,但通常会使性能降低 3 倍。
vertexSplitQuadraticBasisSplinestring"vsqbs"VSQBS 插值。防止放大时出现“阶梯状”。

format

format ⇒ Object

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

示例

console.log(sharp.format);

queue

queue

EventEmitter 在以下任一情况下发出更改事件:

  • 排队,等待 libuv 提供工作线程
  • 完成

示例

sharp.queue.on('change', function(queueLength) {
  console.log('Queue contains ' + queueLength + ' task(s)');
});

cache

cache([options]) ⇒ Object

获取或在提供选项时设置 libvips 操作缓存的限制。限制发生任何变化后,缓存中的现有条目将被修剪。此方法始终返回缓存统计信息,可用于确定特定任务需要多少工作内存。

参数类型默认说明
[options]Object | booleantrue具有以下属性的对象,或布尔值,其中 true 使用默认缓存设置,false 删除所有缓存设置缓存
[options.memory]number50是此缓存可使用的最大内存(以 MB 为单位)
[options.files]number20是可容纳的最大文件数open
[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 核心数,但使用基于 glibc 且不使用 jemalloc 的 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 个并发线程。

返回: 数字 - 并发

参数类型
[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 已编译高速公路支持。

通过利用 CPU 的 SIMD 矢量单元(例如 Intel SSE 和 ARM NEON)提高调整大小、模糊和锐化操作的性能。

参数类型默认
[simd]booleantrue

示例

const simd = sharp.simd();
// simd is `true` if the runtime use of highway is currently enabled

示例

const simd = sharp.simd(false);
// prevent libvips from using highway at runtime

block

block(options)

在运行时阻止 libvips 操作。

这是对 VIPS_BLOCK_UNTRUSTED 环境变量的补充,设置后将阻止所有“不受信任”的操作。

: 0.32.4

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

示例(阻止所有 TIFF 输入。)

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

unblock

unblock(options)

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

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

: 0.32.4

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

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

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

示例(阻止缓冲区或流中除 JPEG 和 PNG 之外的所有输入。)

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