发布一个自己写的Nodejs图片服务器NImg

发布一个自己写的Nodejs图片服务器NImg

NImg是基于ZImg的nodejs实现。

NImg提供图片上传、存储、编辑,动态裁剪等操作。

前端使用Nginx做文件缓存和访问路径权限隔离。

https://github.com/ofpay/nimg

2 回复

发布一个自己写的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。它提供了图片上传、存储、编辑以及动态裁剪等功能。

主要特性

  1. 图片上传:支持通过 API 接口上传图片。
  2. 图片存储:图片可以存储在本地文件系统或云存储服务(如 AWS S3)中。
  3. 图片编辑:支持基础的图片编辑功能,如调整大小、添加水印等。
  4. 动态裁剪:可以根据请求参数动态裁剪图片。

技术栈

  • 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,你可以轻松地实现图片上传、存储、编辑和裁剪等功能。

链接

希望这些信息对你有帮助!如果你有任何问题或建议,请随时反馈。

回到顶部