[ 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` 或更高。细线(宽度=1)看起来断断续续且不专业。
**增加视觉深度**:
- 使用渐变背景 (`create_gradient_background`)
- 分层多个形状以增加复杂性(例如,在星星内部嵌套一个小星星)
**让形状更有趣**:
- 不要只画一个简单的圆 - 添加高光、圆环或图案
- 星星可以有光晕 (draw