发布一个自己写的Nodejs图片服务器NImg
发布一个自己写的Nodejs图片服务器NImg
NImg是基于ZImg的nodejs实现。
NImg提供图片上传、存储、编辑,动态裁剪等操作。
前端使用Nginx做文件缓存和访问路径权限隔离。
发布一个自己写的Nodejs图片服务器NImg
大家好,今天我想向大家介绍我最近开发的一个Node.js图片服务器——NImg。NImg 是基于 ZImg 的 Node.js 实现,提供了丰富的图片处理功能,包括图片上传、存储、编辑以及动态裁剪等。
功能概览
- 图片上传:用户可以上传图片到服务器。
- 图片存储:图片将被保存到指定目录或云存储中。
- 图片编辑:支持对图片进行基础的编辑操作,如旋转、缩放等。
- 动态裁剪:可以根据需要动态裁剪图片。
技术栈
- Node.js:后端服务的核心技术。
- Express:用于快速搭建Web应用。
- Multer:处理文件上传。
- Sharp:用于高效的图像处理。
前端配置
为了提高性能和安全性,前端使用 Nginx 进行文件缓存和访问路径权限隔离。这样可以确保图片资源能够高效地分发,并且可以通过配置文件来限制某些敏感路径的访问。
示例代码
首先,安装必要的依赖包:
npm install express multer sharp
接下来是一个简单的示例代码,展示了如何设置一个基本的图片上传和裁剪功能:
const express = require('express');
const multer = require('multer');
const sharp = require('sharp');
const path = require('path');
const app = express();
const upload = multer({ dest: 'uploads/' });
app.post('/upload', upload.single('image'), async (req, res) => {
try {
const imagePath = req.file.path;
// 对图片进行裁剪
await sharp(imagePath)
.resize(200, 200)
.toFile(path.join('output', `${Date.now()}.jpg`));
res.status(200).send('Image uploaded and cropped successfully!');
} catch (error) {
res.status(500).send('Error processing image.');
}
});
app.listen(3000, () => console.log('Server is running on port 3000'));
GitHub 地址
项目源码已托管在 GitHub 上,欢迎 Star 和 Fork!
结语
NImg 是一个轻量级但功能强大的图片服务器,适合用于各种图片相关的应用场景。如果你有任何问题或建议,欢迎在 GitHub 上提交 Issue 或 Pull Request。
希望 NImg 能够帮助你更高效地处理图片!
发布一个自己写的Node.js图片服务器NImg
简介
NImg 是一个基于 Node.js 实现的图片服务器,类似于 ZImg。它提供了图片上传、存储、编辑以及动态裁剪等功能。
主要特性
- 图片上传:支持通过 API 接口上传图片。
- 图片存储:图片可以存储在本地文件系统或云存储服务(如 AWS S3)中。
- 图片编辑:支持基础的图片编辑功能,如调整大小、添加水印等。
- 动态裁剪:可以根据请求参数动态裁剪图片。
技术栈
- Node.js:后端服务器框架。
- Express:HTTP 框架,用于处理路由和中间件。
- Multer:用于处理
multipart/form-data
,主要用于上传文件。 - Sharp:强大的图像处理库,支持各种图像操作。
- Nginx:作为文件缓存和访问路径权限隔离工具。
示例代码
以下是一些关键代码片段:
const express = require('express');
const multer = require('multer');
const sharp = require('sharp');
const path = require('path');
const fs = require('fs');
const app = express();
const upload = multer({ dest: 'uploads/' });
app.post('/upload', upload.single('image'), async (req, res) => {
try {
const imagePath = req.file.path;
// 图片裁剪
await sharp(imagePath)
.resize(300, 300)
.toFile(path.join('uploads', `resized_${Date.now()}.jpg`));
res.status(200).send({ message: 'Image uploaded and resized successfully' });
} catch (error) {
res.status(500).send({ error: error.message });
}
});
app.listen(3000, () => console.log('Server running on port 3000'));
前端配置
使用 Nginx 作为反向代理和缓存服务器。配置文件示例如下:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache my_cache;
}
location /uploads/ {
expires 1d;
add_header Cache-Control "public";
}
}
总结
NImg 提供了一个简单的图片处理和管理解决方案,适用于需要图片上传和处理的项目。通过结合 Express 和 Sharp,你可以轻松地实现图片上传、存储、编辑和裁剪等功能。
链接
- GitHub 仓库: https://github.com/ofpay/nimg
希望这些信息对你有帮助!如果你有任何问题或建议,请随时反馈。