安装方式
命令行安装
在项目根目录执行以下命令,完成 Skill 安装。
npx bzskills add anthropics/skills --skill slack-gif-creator 针对Slack优化的动画GIF创建知识和实用工具。提供约束条件、验证工具和动画概念。在用户请求为Slack制作动画GIF时使用,例如:“make me a GIF of X doing Y for Slack”。
30.6k
下载量
命令行安装
在项目根目录执行以下命令,完成 Skill 安装。
npx bzskills add anthropics/skills --skill slack-gif-creator name: slack-gif-creator
description: 针对Slack优化的动画GIF创建知识和实用工具。提供约束条件、验证工具和动画概念。在用户请求为Slack制作动画GIF时使用,例如:“make me a GIF of X doing Y for Slack”。
license: Complete terms in LICENSE.txt本工具集提供用于创建专为 Slack 优化的动画 GIF 的实用工具与知识。
尺寸:
参数:
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 加载和处理图片:
from PIL import Image
uploaded = Image.open('file.png')
# 直接使用,或仅作为颜色/样式的参考
从头绘制图形时,使用 PIL 的 ImageDraw 基本绘图元素:
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)让形状更有趣:
注意颜色:
对于复杂形状(心形、雪花等):
要富有创意和细节!好的 Slack GIF 应该看起来精致,而不是像占位图形。
core.gif_builder)组装帧并针对 Slack 进行优化:
builder = GIFBuilder(width=128, height=128, fps=10)
builder.add_frame(frame) # 添加 PIL Image
builder.add_frames(frames) # 添加帧列表
builder.save('out.gif', num_colors=48, optimize_for_emoji=True, remove_duplicates=True)
core.validators)检查 GIF 是否符合 Slack 要求:
from core.validators import validate_gif, is_slack_ready
# 详细验证
passes, info = validate_gif('my.gif', is_emoji=True, verbose=True)
# 快速检查
if is_slack_ready('my.gif'):
print("准备就绪!")
core.easing)实现平滑运动而非线性运动:
from core.easing import interpolate
# 进度从 0.0 到 1.0
t = i / (num_frames - 1)
# 应用缓动
y = interpolate(start=0, end=400, t=t, easing='ease_out')
# 可选:linear, ease_in, ease_out, ease_in_out,
# bounce_out, elastic_out, back_out
core.frame_composer)常见需求的便捷函数:
from core.frame_composer import (
create_blank_frame, # 纯色背景
create_gradient_background, # 垂直渐变
draw_circle, # 圆形辅助
draw_text, # 简单文本渲染
draw_star # 五角星
)
通过振荡来偏移对象位置:
math.sin() 或 math.cos() 配合帧索引有节奏地缩放对象大小:
math.sin(t * frequency * 2 * math.pi) 实现平滑脉冲物体下落并弹起:
easing='bounce_out' 的 interpolate() 实现着陆easing='ease_in' 实现下落(加速)围绕中心旋转对象:
image.rotate(angle, resample=Image.BICUBIC)逐渐出现或消失:
Image.blend(image1, image2, alpha)将对象从屏幕外移动到指定位置:
easing='ease_out' 的 interpolate() 实现平滑停止easing='back_out'缩放并定位以实现缩放效果:
创建向外辐射的粒子:
x += vx, y += vyvy += gravity_constant仅在要求减小文件大小时,选用以下几种方法:
num_colors=48 而非 128save() 中设置 remove_duplicates=Trueoptimize_for_emoji=True 自动优化# 针对表情符号的最大优化
builder.save(
'emoji.gif',
num_colors=48,
optimize_for_emoji=True,
remove_duplicates=True
)
本技能提供:
它不提供:
关于用户上传的说明:本技能不包含预构建的图形,但如果用户上传了图片,请使用 PIL 加载并处理它 – 根据用户请求判断他们是希望直接使用还是仅作为灵感。
要有创意!结合概念(弹跳+旋转,脉冲+滑动等),并充分利用 PIL 的全部功能。
pip install pillow imageio numpy