[ SKILL_DOCUMENTATION ]
# Slack GIF 创建器
一个提供用于创建 Slack 优化动画 GIF 的工具和知识的工具包。
## Slack 要求
**尺寸:**
- 表情符号 GIF:128x128 (推荐)
- 消息 GIF:480x480
**参数:**
- FPS:10-30 (越低文件越小)
- 颜色:48-128 (越少文件越小)
- 时长:表情符号 GIF 保持在 3 秒以内
## 核心工作流
python
from core.gif_builder import GIFBuilder
from PIL import Image, ImageDraw
# 1. 创建构建器
builder = GIFBuilder(width=128, height=128, fps=10)
# 2. 生成帧
for i in range(12):
frame = Image.new('RGB', (128, 128), (240, 248, 255))
draw = ImageDraw.Draw(frame)
# 使用 PIL 原语绘制你的动画
# (圆形、多边形、线条等)
builder.add_frame(frame)
# 3. 优化保存
builder.save('output.gif', num_colors=48, optimize_for_emoji=True)
## 绘制图形
### 处理用户上传的图像
如果用户上传了图像,考虑他们是否想要:
- **直接使用** (例如:“动画化这个”、“将其拆分为帧”)
- **作为灵感** (例如:“制作一个像这样的东西”)
使用 PIL 加载和处理图像:
python
from PIL import Image
uploaded = Image.open('file.png')
# 直接使用,或仅作为颜色/样式的参考
### 从零开始绘制
从零开始绘制图形时,使用 PIL ImageDraw 原语:
python
from PIL import ImageDraw
draw = ImageDraw.Draw(frame)
# 圆形/椭圆
draw.ellipse([x1, y1, x2, y2], fill=(r, g, b), outline=(r, g, b), width=3)
# 星形、三角形、任何多边形
points = [(x1, y1), (x2, y2), (x3, y3), ...]
draw.polygon(points, fill=(r, g, b), outline=(r, g, b), width=3)
# 线条
draw.line([(x1, y1), (x2, y2)], fill=(r, g, b), width=5)
# 矩形
draw.rectangle([x1, y1, x2, y2], fill=(r, g, b), outline=(r, g, b), width=3)
**不要使用:** 表情符号字体(跨平台不可靠)或假设存在预打包的图形。
### 让图形更美观
图形应该看起来精致且有创意,而不是基础。方法如下:
**使用更粗的线条** - 轮廓和线条始终设置 `width=2` 或更高。细线(width=1)看起来断断续续且不专业。
**增加视觉深度**:
- 为背景使用渐变 (`create_gradient_background`)
- 分层多个形状以增加复杂性(例如,在星星内部嵌套一个小星星)
**让形状更有趣**:
- 不要只画一个简单的圆 - 添加高光、环或图案
- 星星可以有发光效果(绘制