一个基于腾讯云 SCF(Serverless Cloud Function)的自动化图片转换服务,当图片上传到指定的 COS 存储桶时,自动触发云函数将图片转换为 WebP 格式并保存到目标存储桶。
scf-image2webp/ ├── README.md # 项目说明文档 ├── serverless.yml # Serverless Framework 配置 ├── requirements.txt # Python 依赖包 ├── .gitignore # Git 忽略文件 └── src/ # 源代码目录 ├── index.py # 主处理函数 └── [依赖包...] # 打包的 Python 依赖
cos-python-sdk-v5==1.9.38 # 腾讯云 COS Python SDK Pillow==10.4.0 # 图片处理库 requests>=2.8 # HTTP 请求库 six # Python 2/3 兼容库 xmltodict # XML 解析库 crcmod # CRC 校验库 pycryptodome # 加密库
在云函数配置中设置以下环境变量:
SECRET_ID=your_secret_id # 腾讯云 SecretId
SECRET_KEY=your_secret_key # 腾讯云 SecretKey
REGION=ap-guangzhou # COS 地域(默认:ap-guangzhou)
APPID=your_appid # 腾讯云 APPID
RESIZED_BUCKET=target-bucket # 目标存储桶名称(不含 APPID)
# serverless.yml 配置说明
component: scf
name: scf-image2webp
inputs:
name: image2webp # 函数名称
src:
src: ./src # 源代码目录
handler: index.main_handler # 入口函数
runtime: Python3.10 # 运行时版本
namespace: default # 命名空间
region: ap-guangzhou # 部署地域
memorySize: 128 # 内存大小 (MB)
timeout: 15 # 超时时间 (秒)
triggers: # 触发器配置
- type: cos # COS 触发器
enable: true
events: 'cos:ObjectCreated:*' # 对象创建事件
# 安装 Serverless Framework
npm install -g serverless
# 安装腾讯云组件
npm install -g @serverless/tencent-scf
# 方式一:使用 serverless 配置
serverless config credentials --provider tencent --key <SecretId> --secret <SecretKey>
# 方式二:设置环境变量
export TENCENT_SECRET_ID=<SecretId>
export TENCENT_SECRET_KEY=<SecretKey>
# 进入项目目录
cd scf-image2webp
# 部署到云端
serverless deploy
部署完成后,需要在腾讯云控制台配置 COS 触发器:
cos:ObjectCreated:*.webp# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/Mac
# 或
venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
logging 模块输出详细日志权限错误
触发器不生效
转换失败
内存不足
500: 环境变量配置错误COS Error: COS 服务相关错误PIL Error: 图片处理错误git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
注意: 使用本服务前请确保已了解腾讯云 SCF 和 COS 的计费规则。