教程菜单 本页目录

此高速 Node-API 模块的典型用例是将常见格式的大图像转换为较小、适合网络的不同尺寸的 JPEG、PNG、WebP、GIF 和 AVIF 图像。

它可以与所有支持 Node-API v9 的 JavaScript 运行时一起使用,包括 Node.js >= 18.17.0、Deno 和 Bun。

由于使用了 libvips ,调整图像大小通常比使用最快的 ImageMagick 和 GraphicsMagick 设置快 4 到 5 倍。

颜色空间、嵌入式 ICC 配置文件和 alpha 透明通道都得到正确处理。Lanczos 重采样确保不会为了速度而牺牲质量。

除了调整图像大小外,还可以进行旋转、提取、合成和伽马校正等操作。

大多数现代 macOS、Windows 和 Linux 系统不需要任何额外的安装或运行时依赖项。

格式

此模块支持读取 JPEG、PNG、WebP、GIF、AVIF、TIFF 和 SVG 图像。

输出图像可以是 JPEG、PNG、WebP、GIF、AVIF 和 TIFF 格式以及未压缩的原始像素数据。

流、缓冲区对象和文件系统可用于输入和输出。

单个输入流可以拆分为多个处理管道和输出流。

可以生成深度缩放图像金字塔,适合与 OpenSeadragon 等“滑动地图”图块查看器一起使用。

快速

该模块由速度极快的 libvips 图像处理库提供支持,该库最初于 1989 年在伯贝克学院创建,目前由 John Cupitt 领导的一个小团队维护。

只有一小部分未压缩的图像数据会保存在内存中并一次进行处理,从而充分利用多个 CPU 核心和 L1/L2/L3 缓存。

由于 libuv,一切都保持非阻塞,不会生成任何子进程,并且支持 Promises/async/await。

最佳

mozjpeg 和 pngquant 的功能可用于分别优化 JPEG 和 PNG 图像的文件大小,而无需调用单独的 imagemin 进程。

生成 JPEG 输出图像时,无需使用单独的命令行工具(如 jpegoptim 和 jpegtran )即可优化 Huffman 表。

PNG 过滤默认处于禁用状态,对于图表和线条图,它通常会产生与 pngcrush 相同的结果。

无需使用单独的命令行工具(如 gifsicle )即可优化动画 GIF 输出的文件大小。

贡献

贡献者指南涵盖了报告错误、请求功能和提交代码更改。

许可

版权所有 2013 Lovell Fuller 和其他人。

根据 Apache 许可证 2.0 版(“许可证”)授权;除非遵守许可证,否则您不得使用此文件。您可以在 https://www.apache.org/licenses/LICENSE-2.0 获取许可证副本

除非适用法律要求或书面同意,否则根据许可证分发的软件将按“原样”分发,不附带任何明示或暗示的保证或条件。请参阅许可证,了解许可证下管理权限和限制的特定语言。

本页目录