Node.js 使用 Sharp 包进行图片上传、处理和调整大小2025年5月6日 | 阅读4分钟 在本文中,我们将讨论如何使用 Sharp 包和示例在 Node.js 中进行图片上传、处理和调整大小。 许多Web 应用程序(例如在电子商务网站中使用个人资料图片或产品图片)必须管理多种图像格式和其他格式。通常,困难在于在不损害图像质量的情况下减小这些图像的大小。为了确保每张图像都能在各种设备和屏幕分辨率上正确显示,此过程通常涉及生成每个图像的可伸缩、优化副本。在 Web 开发中,平衡文件大小、图像质量和性能需要使用适当的图像存储策略和压缩技术。 模块:Sharp、Multer根据官方 npm 文档,Sharp 经常用于将 JPEG、PNG 和 WebP 等广泛使用的格式的巨大图像转换为更小、更优化且适合 Web 的版本。由于这种转换,图像可以调整大小和压缩到不同的尺寸,从而确保更快的加载时间和改进的在线性能。特别是对于需要快速图片交付和有效数据管理的网站和应用程序,Sharp 的功能使其非常适合将高分辨率照片缩小到更易于管理的大小,而不会影响质量,从而改善用户体验。 什么是 Sharp 模块?Sharp 是一个快速的 Node.js API 模块,可用于将大型图像转换为更小、更易读的格式,如 JPEG、PNG、WebP、GIF 和 AVIF。其大小可以更改。与 Node-API v9 兼容的 JavaScript 运行时,例如 Node.js 版本(~18.17.0 或 >= 20.3.0)、Deno 和 Bun。Sharp 使用 libvips 提供比最快的 ImageMagick 和 GraphicsMagick 设置快 4-5 倍的图片缩放速度。在处理过程中,它通过精确处理颜色空间、alpha 透明通道和嵌入的 ICC 配置文件来确保质量。此外,Sharp 在支持各种图像操作(例如伽马校正、合成、旋转和提取)的同时,保持出色的性能和质量。 什么是 Multer 模块?Multer 是 Node.js 的一个强大中间件,它简化了 multipart/form 数据处理,该数据通常用于 Web 应用程序中的文件上传。它基于 Busboy 构建,可确保在管理文件上传时实现最高效率。此中间件专门设计用于处理包含文件数据的表单,这意味着它不会处理任何不使用 multipart/form-data 编码类型的表单。当提交包含文件上传的表单时,Multer 会处理数据并将正文对象和文件对象附加到请求对象。 Multer 是在 Node.js 应用程序中有效、安全和灵活地管理文件上传的重要工具,因为它提供了多种配置选项,包括用于指定文件保存位置和方式的存储引擎,以及设置文件大小和类型限制以更好地控制上传的能力。正文对象表示表单中任何文本字段的值,而文件对象包含实际上传的文件。根据表单字段,文件对象可以是单个文件或文件数组。 示例让我们举一个例子来说明如何在 Node.js 中使用 Sharp 包上传、处理和调整图像大小。 输出 No file uploaded 说明此 Node.js 应用程序使用 Express、Multer 和 Sharp 来管理图像上传和调整大小。Multer 首先配置了一个存储引擎,该引擎根据当前时间戳创建唯一的 文件名,并将上传的图像存储在 ./uploads 目录中。/upload 端点处理图像上传,它保存文件,然后使用 Sharp 将其大小调整为 300x300 像素。当调整大小成功时,调整大小图像的路径作为响应返回,并以 -resized 后缀保存。如果出现任何错误,则返回相关的错误消息。最后,服务器在端口 3000 上侦听传入请求。 |
目录 Node.js PHP 1. Node.js 由 Ryan Dahl 于 2009 年创建,因此相对较新。PHP 由 Rasmus Lerdorf 于 1994 年创建。因此,它拥有 20 多年的辉煌历史。2. Node.js 本身不是一种编程语言。它是一个在服务器端运行 JavaScript 的平台...
阅读 2 分钟
目录 Node.js Java 1. Node.js 是单线程的。Java 是多线程的 2. 它具有异步 I/O。它具有同步 I/O。3. Node.js 比 Java 快,因为它具有异步和非阻塞的特性。Java 是同步的,因此比 Node.js 慢。Node.js 相对于 Java 的优势 以下是关于一些重要点的列表...
阅读1分钟
索引 Node.js Python 1) Node.js 比 Python 快得多。Python 比 JavaScript 更漂亮。如果你不喜欢 JavaScript,用 Python 编程真的很有趣。它还具有 JavaScript 没有的许多有用语言功能,如生成器、装饰器、类等。2) Node.js 非常流行...
阅读 2 分钟
Node.js 和 AngularJS 都是使用 JavaScript 构建 Web 应用程序而开发的,它们都遵循 JavaScript 的语法,但在架构和工作方式上却大相径庭。以下是它们之间主要区别的列表。Node.js 和 AngularJS 之间的区别 索引 Node.js AngularJS 1) Node.js 是一个跨平台运行时环境...
阅读 2 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India