用途
Slack GIF Creator 是一套用于制作适配 Slack 的动画 GIF 的工具包。它面向 Slack 对 GIF 的两类使用场景——消息 GIF 与表情 GIF——提供尺寸约束校验、可组合的动画原语,以及可选的辅助工具。资料说明,这些工具可被自由组合以实现创作目标,工具包提供的是构建块而非固定配方。
Slack 的要求
消息 GIF
- 最大体积:约 2MB
- 推荐尺寸:480x480
- 典型帧率:15-20 FPS
- 颜色数:128-256
- 时长:2-5 秒
表情 GIF
- 最大体积:64KB(严格限制)
- 推荐尺寸:128x128
- 典型帧率:10-12 FPS
- 颜色数:32-48
- 时长:1-2 秒
资料指出表情 GIF 的 64KB 限制较为严苛,建议策略包括:总帧数限制在 10-15 帧、最多使用 32-48 种颜色、保持设计简单、避免渐变、频繁校验文件体积。
主要能力
校验器
- 文件体积校验:
check_slack_size('emoji.gif', is_emoji=True),返回通过与否及体积细节。 - 尺寸校验:
validate_dimensions(128, 128, is_emoji=True)。 - 完整校验:
validate_gif('emoji.gif', is_emoji=True)或快速判断is_slack_ready('emoji.gif', is_emoji=True)。 - GIFBuilder 的
save方法在文件超限时会自动警告,返回信息包含 size_kb、size_mb、frame_count、duration_seconds。
动画原语(可组合)
资料列出以下原语,均可通过对应模板模块调用:
- 抖动 Shake:可设置强度与方向(both / horizontal / vertical)。
- 弹跳 Bounce。
- 旋转 Spin / Rotate:支持顺时针、摇摆(wobble)、加载指示器(dots)。
- 脉冲 Pulse / Heartbeat:平滑脉冲、心跳(双拍)、注意力脉冲。
- 淡入淡出 Fade:fade in、fade out、两个表情间的交叉淡化。
- 缩放 Zoom:放大、缩小、爆炸式缩放(可加运动模糊)。
- 爆炸 Explode / Shatter:爆裂、碎裂、溶解为粒子、粒子喷射。
- 扭动 Wiggle / Jiggle:果冻式抖动、波浪运动、兴奋抖动。
- 滑入 Slide:从某方向滑入(可带超出回弹)、横向滑过、多对象依次滑入。
- 翻转 Flip:水平翻转、垂直翻转、快速翻转。
- 变形 Morph / Transform:交叉淡化变形、缩放变形、旋转变形。
- 移动 Move:线性、弧线(抛物线)、圆周、波浪运动,可配合缓动。
- 万花筒 Kaleidoscope:单帧应用、动画化万花筒,以及更快的一步镜像(横向、纵向、四向、径向)。
资料提供了组合原语的写法示例,例如弹跳加冲击抖动、移动加抖动触发等,并说明可自由混合。
辅助工具
- GIFBuilder(组装与优化):自动颜色量化、去除重复帧、Slack 体积警告、表情模式(激进优化)。
- 文字渲染:
draw_text_with_outline及 TYPOGRAPHY_SCALE,用于小尺寸 GIF 提高可读性;也提示大 GIF 可直接用 PIL 的ImageDraw.text()。 - 颜色管理:
get_palette('vibrant')等预设调色板(vibrant、pastel、dark、neon、professional)。 - 视觉特效:ParticleSystem(火花、彩带)、
create_impact_flash闪光、create_shockwave_rings冲击波环。 - 缓动函数:
interpolate支持 linear、ease_in、ease_out、ease_in_out、bounce_out、elastic_out、back_out 等。 - 帧合成:
create_gradient_background、draw_emoji_enhanced(可带阴影)、draw_circle_with_shadow、draw_star。
优化策略
- 消息 GIF 超 2MB 时:减少帧数(降帧率或缩短时长)、减少颜色(128→64)、缩小尺寸(480x480→320x320)、启用重复帧去除。
- 表情 GIF 超 64KB 时(需更激进):限制 10-12 帧、最多 32-40 色、避免渐变(纯色压缩更好)、简化设计、在 save 中使用 optimize_for_emoji=True。
使用方式
资料中的示例显示典型流程为:使用 GIFBuilder(width, height, fps) 创建构建器,逐帧添加 add_frame,最后通过 save('output.gif', num_colors=..., optimize_for_emoji=...) 保存,并按需调用校验器。动画原语与辅助工具通过各模板与 core 模块导入使用。资料末尾提到「依赖:使用本工具包时,请安装这些依赖(仅当尚未安装时)」,但其后的具体依赖安装命令内容缺失,暂未提供。
适用场景
适合需要为 Slack 制作消息动图或表情动图的场景,尤其是对体积、尺寸、帧数有严格限制的表情 GIF。工具包强调在 Slack 技术约束内实现创作自由。
限制
- 表情 GIF 的 64KB 上限非常严格,需要激进优化。
- 小尺寸表情 GIF 的文字可读性较难,资料建议使用描边等方式。
- 依赖安装的具体方式与命令在资料中未完整给出,暂未提供。