用途:为 Slack 创建优化过的动画 GIF,可用于表情(emoji)动图或消息动图,并依据 Slack 的尺寸、帧率、颜色数等要求进行校验和优化。
主要约束(资料给出):emoji GIF 推荐 128x128,消息 GIF 为 480x480;FPS 建议 10-30,越低文件越小;颜色建议 48-128,越少越小;emoji GIF 时长建议控制在 3 秒以内。
核心能力:提供 GIFBuilder 组装帧并优化输出,Validators 校验 GIF 是否符合 Slack 要求,Easing 函数实现平滑运动,Frame Helpers 提供纯色/渐变背景、圆形、文字、五角星等常用绘制辅助。动画概念涵盖抖动、脉冲/心跳、弹跳、旋转、淡入淡出、滑动、缩放、爆炸粒子等。
用法示例: from core.gif_builder import GIFBuilder builder = GIFBuilder(width=128, height=128, fps=10) builder.add_frame(frame) builder.save('output.gif', num_colors=48, optimize_for_emoji=True)
校验: from core.validators import validate_gif, is_slack_ready passes, info = validate_gif('my.gif', is_emoji=True, verbose=True)
缓动: from core.easing import interpolate 可用 linear、ease_in、ease_out、ease_in_out、bounce_out、elastic_out、back_out。
适用场景:用户要求制作 Slack 动图、需要对 GIF 尺寸和体积做优化、或希望用 PIL 从零绘制并加入动画效果。若用户上传图片,可用 PIL 打开并按其要求直接使用或仅作参考。
限制:不提供固定动画模板或预置图形库,不渲染 emoji 字体(跨平台不可靠),也不假设技能内存在已打包的图形资源。优化策略(减少帧数、减少颜色、缩小尺寸、去重、emoji 模式)仅在用户要求减小文件体积时使用。依赖:pip install pillow imageio numpy。