OpenFaaS 实战:图片压缩函数开发与部署
1. 环境准备
- 安装 OpenFaaS CLI:
curl -sSL https://cli.openfaas.com | sudo sh
- 登录 OpenFaaS 网关:
faas-cli login --username admin --password <your_password>
2. 创建函数模板
faas-cli new --lang python3 img-compress
生成文件结构:
img-compress/
├── handler.py
└── requirements.txt
3. 实现图片压缩逻辑(handler.py)
from PIL import Image
import io
def handle(req):
# 接收二进制图片数据
img_bytes = req.encode('latin1')
img = Image.open(io.BytesIO(img_bytes))
# 压缩参数设置
img = img.convert('RGB')
output = io.BytesIO()
img.save(output, format='JPEG', quality=70, optimize=True)
return output.getvalue().decode('latin1')
4. 添加依赖(requirements.txt)
Pillow==9.5.0
5. 构建函数镜像
faas-cli build -f img-compress.yml
6. 部署函数
faas-cli deploy -f img-compress.yml
7. 通过 UI 界面操作
-
访问控制台:
http://<your-gateway-ip>:8080 -
部署函数:
- 点击 "Deploy New Function"
- 选择 "img-compress" 函数
- 设置 CPU/Memory 限制(建议 128MB/100mCPU)
-
调用函数:
- 在函数列表点击 "Invoke"
- 上传图片文件(JPEG/PNG)
- 点击 "Invoke" 获取压缩后图片
8. 测试验证
curl -X POST http://<gateway-ip>:8080/function/img-compress \
--data-binary "@input.jpg" \
--output compressed.jpg
技术要点说明
-
图像处理原理:
- 使用 Pillow 库进行格式转换
- 质量参数控制:$Q \in [1,100]$,$Q$ 值越小压缩率越高
- 优化编码:
optimize=True启用霍夫曼编码优化
-
OpenFaaS 特性:
- 冷启动时间 < 300ms(Python 环境)
- 自动扩缩容机制
- 内置 Prometheus 监控指标
注意:生产环境建议添加异常处理(如非图片输入检测)和日志输出,可通过
faas-cli logs img-compress实时查看运行日志。
并通过 UI 界面部署与调用&spm=1001.2101.3001.5002&articleId=154135118&d=1&t=3&u=7b62559fb1b243eeb4929e83cbc4a661)
943

被折叠的 条评论
为什么被折叠?



