📜  使用 Sharp 包的 Node.js 图像上传、处理和调整大小(1)

📅  最后修改于: 2023-12-03 15:22:16.786000             🧑  作者: Mango

使用 Sharp 包的 Node.js 图像上传、处理和调整大小

简介

Sharp 是一个十分实用的 Node.js 图像处理模块,支持各种图像格式,功能强大。Sharp 可以用于图像上传、处理和调整大小,常用于网站、移动应用程序等,是处理图像的理想工具。

安装 Sharp

安装 Sharp 可以通过 npm 包管理器来完成:

npm install sharp
图像上传

使用 Sharp 可以轻松实现图像上传。首先需要在 HTML 中设置相应的表单:

<form action="/upload" enctype="multipart/form-data" method="post">
    <input type="file" name="avatar">
    <input type="submit" value="Upload">
</form>

然后,在 Node.js 中使用 Express 框架接收并处理表单数据:

const express = require('express');
const multer = require('multer');
const path = require('path');
const sharp = require('sharp');

const app = express();

const storage = multer.diskStorage({
    destination: function(req, file, cb) {
        cb(null, 'uploads/')
    },
    filename: function(req, file, cb) {
        cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))
    }
});

const upload = multer({ storage: storage });

app.post('/upload', upload.single('avatar'), (req, res) => {
    res.send('File uploaded successfully');
});

这段代码会将上传的图像保存到 uploads 文件夹中,并在控制台打印出 File uploaded successfully 消息。

图像处理和调整大小

使用 Sharp 可以轻松实现各种图像处理操作,例如剪裁、调整大小、缩略图等。下面是一个使用 Sharp 调整图像大小的示例代码:

sharp('uploads/my-image.jpg')
    .resize(300, 300)
    .toFile('uploads/my-image-resized.jpg', (err, info) => {
        if(err) throw err;
        console.log(info);
    });

上述代码会将 uploads 文件夹中的 my-image.jpg 图像缩放并调整大小为 300 x 300 像素,并将其保存为 uploads/my-image-resized.jpg

更多关于 Sharp 的操作方法,请参考 Sharp 官方文档

结论

Sharp 是一个强大而实用的 Node.js 模块,可以轻松上传、处理和调整大小图像,非常适合于网站、移动应用程序等。需要注意的是,图像处理需要消耗大量的 CPU 资源,因此在使用 Sharp 进行图像处理时,需要注意性能问题。