🎬 Slack GIF Creator - Slack GIF 创建器
这是什么?
Slack GIF Creator 是一个专为 Slack 平台优化的动画 GIF 创建工具包。它不仅提供 Slack 的规格约束,还包含丰富的动画概念、图形绘制工具和优化策略。
核心价值:3 行代码 → 符合 Slack 标准的精美动画 GIF
能做什么?
核心功能一览
- ✅ Slack 规格优化:自动符合平台要求(128x128 emoji / 480x480 消息)
- 🎨 丰富动画效果:抖动、脉冲、弹跳、旋转、淡入淡出等 8+ 种效果
- 🖌️ 专业图形绘制:使用 PIL 绘制高质量图形(圆形、星形、多边形)
- 📦 文件大小控制:多种优化策略(颜色数、帧率、重复帧移除)
- 🔍 自动验证:确保符合 Slack 上传标准
适合谁用?
- 团队管理员:为 Slack 工作空间添加自定义 emoji
- 设计师:创建品牌化动画素材
- 开发者:生成动态反馈动画
- 内容创作者:制作有趣的沟通素材
典型使用场景
场景 1:庆祝 Emoji 🎉
需求:团队完成项目,创建庆祝动画 emoji
from core.gif_builder import GIFBuilder
from core.frame_composer import draw_star
import math
builder = GIFBuilder(width=128, height=128, fps=12)
for i in range(12):
frame = create_blank_frame(128, 128, (255, 255, 255))
# 旋转的金色星星
angle = (i / 12) * 360
draw_star(frame, x=64, y=64, size=40,
rotation=angle, color=(255, 215, 0))
# 添加闪光效果
scale = 1.0 + 0.1 * math.sin(i / 12 * math.pi * 2)
builder.add_frame(frame)
builder.save('celebrate.gif', optimize_for_emoji=True)
结果:金色星星旋转闪光,适合表达"完成"或"优秀"
场景 2:加载动画 ⏳
需求:为应用创建"正在处理"的状态指示器
builder = GIFBuilder(width=128, height=128, fps=10)
for i in range(12):
frame = Image.new('RGB', (128, 128), (255, 255, 255))
draw = ImageDraw.Draw(frame)
# 绘制旋转的圆点
for j in range(8):
angle = (j / 8) * 2 * math.pi + (i / 12) * 2 * math.pi
x = 64 + int(30 * math.cos(angle))
y = 64 + int(30 * math.sin(angle))
draw.ellipse([x-5, y-5, x+5, y+5], fill=(0, 150, 255))
builder.add_frame(frame)
builder.save('loading.gif', num_colors=64)
结果:蓝色圆点围成圆圈旋转,经典的加载动画
场景 3:反应表情 👍
需求:创建点赞或同意的动画 emoji
builder = GIFBuilder(width=128, height=128, fps=15)
for i in range(20):
frame = Image.new('RGB', (128, 128), (255, 255, 255))
draw = ImageDraw.Draw(frame)
# 心跳式脉冲
t = i / 20
scale = 1.0 + 0.2 * math.sin(t * math.pi * 4)
size = int(30 * scale)
# 绘制拇指(简化为圆形)
draw.ellipse([64-size, 64-size, 64+size, 64+size],
fill=(70, 130, 255))
builder.add_frame(frame)
builder.save('thumbs-up.gif', optimize_for_emoji=True)
结果:蓝色圆形以心跳节奏脉动,表达"赞同"
快速开始
3 步创建 GIF
步骤 1:创建构建器
from core.gif_builder import GIFBuilder
# Emoji GIF
builder = GIFBuilder(width=128, height=128, fps=10)
# 或消息 GIF
builder = GIFBuilder(width=480, height=480, fps=20)
步骤 2:生成动画帧
from PIL import Image, ImageDraw
for i in range(12):
# 创建空白帧
frame = Image.new('RGB', (128, 128), (240, 248, 255))
draw = ImageDraw.Draw(frame)
# 绘制图形(使用 PIL 原语)
draw.ellipse([30, 30, 98, 98],
fill=(255, 100, 100),
outline=(200, 50, 50),
width=3) # 粗线条!
builder.add_frame(frame)
步骤 3:保存并优化
builder.save('output.gif',
num_colors=48, # 颜色数(48-128)
optimize_for_emoji=True, # Emoji 模式自动优化
remove_duplicates=True) # 移除重复帧
Slack 规格要求
| 类型 | 尺寸 | 帧率 | 颜色数 | 时长建议 |
|---|---|---|---|---|
| Emoji GIF | 128x128 | 10-15 FPS | 48-128 | ❤️ 秒 |
| 消息 GIF | 480x480 | 20-30 FPS | 128+ | 任意 |
文件大小:Slack 有上传限制,使用优化策略减小文件
核心动画效果
1. 抖动/振动
# 使用 sin/cos 产生偏移
offset_x = int(5 * math.sin(i * 0.5))
offset_y = int(5 * math.cos(i * 0.5))
2. 脉冲/心跳
# 周期性缩放
scale = 1.0 + 0.2 * math.sin(t * math.pi * 2)
size = int(base_size * scale)
3. 弹跳
from core.easing import interpolate
y = interpolate(start=0, end=100, t=t, easing='bounce_out')
4. 旋转
angle = (i / num_frames) * 360
rotated = image.rotate(angle, resample=Image.BICUBIC)
5. 淡入淡出
# 调整透明度
alpha = int(255 * t) # 淡入
alpha = int(255 * (1 - t)) # 淡出
图形绘制技巧
✅ 让图形看起来专业
使用粗线条(width ≥ 2):
draw.ellipse([...], outline=(r, g, b), width=3) # ✅
draw.ellipse([...], outline=(r, g, b), width=1) # ❌ 看起来粗糙
添加视觉深度:
# 渐变背景
from core.frame_composer import create_gradient_background
frame = create_gradient_background(128, 128, (255,200,200), (200,200,255))
# 多层形状(大星星 + 小星星)
draw_star(frame, x=64, y=64, size=50, color=(255,215,0))
draw_star(frame, x=64, y=64, size=30, color=(255,255,100))
使用鲜艳协调的颜色:
# ✅ 好的配色
palette = [
(255, 100, 100), # 红
(100, 200, 255), # 蓝
(255, 215, 0) # 金
]
# ❌ 避免随机 RGB
文件大小优化
仅在需要时使用:
# 方法 1:降低帧率
builder = GIFBuilder(width=128, height=128, fps=10) # 而非 20
# 方法 2:减少颜色
builder.save('emoji.gif', num_colors=48) # 而非 128
# 方法 3:缩小尺寸
builder = GIFBuilder(width=128, height=128) # 而非 480
# 方法 4:移除重复帧
builder.save('emoji.gif', remove_duplicates=True)
# 方法 5:Emoji 模式(自动优化)
builder.save('emoji.gif', optimize_for_emoji=True)
下一步
选择您的路径:
相关技能:
- Algorithmic Art - 更复杂的生成式动画
- Canvas Design - 静态视觉作品
- Theme Factory - 专业配色方案