返回
1. 海报生成服务概述
前端
2023-11-04 14:58:07
拉新活动必备——利用node + fc 部署海报生成服务
文章目录
- 海报生成服务概述
- 使用 Node.js 开发海报生成服务
- 使用 FC 部署海报生成服务
- 如何使用海报生成服务
- 结语
拉新和分享活动中离不开海报的使用。考虑到生成海报属于通用工具,并且需要处理前端生成海报的兼容性问题,我们在项目中开发了此服务。本服务基于 Node.js 和阿里云函数计算开发,可以方便快捷地生成海报。
首先,需要安装必要的 Node.js 模块。可以使用以下命令安装:
npm install --save sharp
npm install --save gm
然后,创建海报生成服务。海报生成服务是一个简单的 Node.js 脚本,可以接受一个 JSON 对象作为输入,并返回一个 PNG 图像。JSON 对象包含要生成的海报的详细信息,例如海报的尺寸、背景颜色、文字内容、图片等。
海报生成服务脚本如下:
const sharp = require('sharp');
const gm = require('gm').subClass({imageMagick: true});
exports.handler = async (event, context) => {
// 解析 JSON 请求体
const data = JSON.parse(event.body);
// 创建海报
const poster = sharp(data.width, data.height, {
background: data.backgroundColor,
});
// 添加文字
for (const text of data.texts) {
poster.composite([{
input: text.content,
top: text.top,
left: text.left,
gravity: 'center',
}]);
}
// 添加图片
for (const image of data.images) {
poster.composite([{
input: image.path,
top: image.top,
left: image.left,
gravity: 'center',
}]);
}
// 返回海报
return {
statusCode: 200,
headers: {
'Content-Type': 'image/png',
},
body: await poster.toBuffer(),
};
};
接下来,需要将海报生成服务部署到阿里云函数计算。可以按照以下步骤进行部署:
- 登录阿里云函数计算控制台。
- 单击“创建函数”。
- 选择“自定义函数”。
- 填写函数名称、运行时、代码入口文件、代码等信息。
- 单击“创建”。
海报生成服务可以通过HTTP请求来调用。请求体是一个 JSON 对象,包含要生成的海报的详细信息。海报生成服务会返回一个 PNG 图像。
可以编写一个简单的 HTML 页面来使用海报生成服务。HTML 页面如下:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="/poster" method="POST">
<label for="width">宽度:</label>
<input type="number" id="width" name="width" value="600">
<label for="height">高度:</label>
<input type="number" id="height" name="height" value="300">
<label for="backgroundColor">背景颜色:</label>
<input type="color" id="backgroundColor" name="backgroundColor" value="#ffffff">
<label for="texts[]">文字内容:</label>
<input type="text" id="texts[]" name="texts[]" value="欢迎参加活动">
<input type="text" id="texts[]" name="texts[]" value="时间: 2023年3月8日">
<input type="text" id="texts[]" name="texts[]" value="地点: 北京市海淀区">
<label for="images[]">图片:</label>
<input type="file" id="images[]" name="images[]" multiple>
<input type="submit" value="生成海报">
</form>
</body>
</html>
海报生成服务是一个简单易用的工具,可以方便快捷地生成海报。本服务基于 Node.js 和阿里云函数计算开发,可以轻松部署和使用。