在前端开发中,处理图片是非常常见的需求。而 express-image-middleware 即是一款方便处理图片的中间件。今天,我们就来学习一下如何使用它!
安装
通过 npm 可以很方便地安装 express-image-middleware:
npm install express-image-middleware
引入和使用
首先,在 Express 项目中引入 express-image-middleware:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --------------- - ------------------------------------ ----- --- - ---------- -- ----- ------------------ ----------------- ------ ---- ---- ---------------- -- -- - -------------------------- ---
接下来,让我们看一下中间件的选项。
中间件选项
express-image-middleware 提供一些选项,可以在配置中间件时进行设置:
cache
cache
是一个布尔值类型的选项,用于开启或关闭缓存。默认情况下,该选项为 false
,即不开启缓存。
app.use('/images', imageMiddleware({ cache: true }));
cacheMaxAge
cacheMaxAge
是一个数字类型的选项,单位是毫秒,用于设置缓存过期时间。当 cache
选项为 true
时,该选项才有效。
app.use('/images', imageMiddleware({ cache: true, cacheMaxAge: 1000 * 3600 * 24 // 1 天 }));
sizer
sizer
是一个函数类型的选项,用于设置图像缩放。该函数接收两个参数:width
和 height
,并返回一个对象,其中包含 width
和 height
属性,例如:
-- -------------------- ---- ------- ------------------ ----------------- ------ ------- ------- -- - -- ------ - ---- - ------ - ------ --- -- - ------ - ------ ------ -- - ----
这个例子中,当图片的宽度大于 800 时,我们将其缩放至 800,高度会按比例自动调整。
converter
converter
是一个函数类型的选项,用于设置图像类型转换。该函数接收两个参数:buffer
和 mimeType
,并返回一个 Buffer 对象,例如:
-- -------------------- ---- ------- ----- ----- - ----------------- ------------------ ----------------- ---------- ----- -------- --------- -- - -- --------- --- ------------ - ------ ----- ---------------------------------- - ------ ------- - ----
这个例子中,当图片的类型为 PNG 时,我们将其转换为 JPEG 格式。
resizer
resizer
是一个函数类型的选项,用于设置图片尺寸调整。该函数接收两个参数:buffer
和 resize
,并返回一个 Buffer 对象,例如:
const sharp = require('sharp'); app.use('/images', imageMiddleware({ resizer: async (buffer, resize) => { return await sharp(buffer).resize(resize).toBuffer(); } }));
这个例子中,我们使用 Sharp 库(需要单独安装)来实现图像尺寸调整。
示例
最后,我们来看一下使用 express-image-middleware 处理图片的一个完整示例:
-- -------------------- ---- ------- ----- ----- - ----------------- ----- ------- - ------------------- ----- --------------- - ------------------------------------ ----- --- - ---------- ------------------ ----------------- ------ ----- ------------ ---- - ---- - --- -- - - ------ ------- ------- -- - -- ------ - ---- - ------ - ------ --- -- - ------ - ------ ------ -- -- ---------- ----- -------- --------- -- - -- --------- --- ------------ - ------ ----- ---------------------------------- - ------ ------- -- -------- ----- -------- ------- -- - ------ ----- ---------------------------------------- - ---- ------------ ----- ---- -- - ---------- ---- ---------------------- ------- --- --- ---------------- -- -- - -------------------------- ---
在这个示例中,我们开启了缓存,并设置了缓存过期时间为 1 天。同时,使用两个函数分别设置了图片的缩放和类型转换。最后,在 Express 中的路由中,我们返回了一张图片。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055b3081e8991b448d8d07