🎯

slack-gif-creator

🎯Skill

from forever-efficient/pitfal-solutions-website

VibeIndex|
What it does

Creates optimized animated GIFs for Slack, handling dimensions, frame rates, and animation techniques with Python's PIL library.

πŸ“¦

Part of

forever-efficient/pitfal-solutions-website(27 items)

slack-gif-creator

Installation

pip installInstall Python package
pip install pillow imageio numpy
πŸ“– Extracted from docs: forever-efficient/pitfal-solutions-website
2Installs
-
AddedFeb 4, 2026

Skill Details

SKILL.md

Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like "make me a GIF of X doing Y for Slack."

Overview

# Slack GIF Creator

A toolkit providing utilities and knowledge for creating animated GIFs optimized for Slack.

Slack Requirements

Dimensions:

  • Emoji GIFs: 128x128 (recommended)
  • Message GIFs: 480x480

Parameters:

  • FPS: 10-30 (lower is smaller file size)
  • Colors: 48-128 (fewer = smaller file size)
  • Duration: Keep under 3 seconds for emoji GIFs

Core Workflow

```python

from PIL import Image, ImageDraw

# 1. Create frames

frames = []

for i in range(12):

frame = Image.new('RGB', (128, 128), (240, 248, 255))

draw = ImageDraw.Draw(frame)

# Draw your animation using PIL primitives

frames.append(frame)

# 2. Save as GIF

frames[0].save(

'output.gif',

save_all=True,

append_images=frames[1:],

duration=100, # ms per frame

loop=0

)

```

Drawing Graphics

Drawing from Scratch

When drawing graphics from scratch, use PIL ImageDraw primitives:

```python

from PIL import ImageDraw

draw = ImageDraw.Draw(frame)

# Circles/ovals

draw.ellipse([x1, y1, x2, y2], fill=(r, g, b), outline=(r, g, b), width=3)

# Stars, triangles, any polygon

points = [(x1, y1), (x2, y2), (x3, y3)]

draw.polygon(points, fill=(r, g, b), outline=(r, g, b), width=3)

# Lines

draw.line([(x1, y1), (x2, y2)], fill=(r, g, b), width=5)

# Rectangles

draw.rectangle([x1, y1, x2, y2], fill=(r, g, b), outline=(r, g, b), width=3)

```

Animation Concepts

Shake/Vibrate

Offset object position with oscillation using math.sin() or math.cos() with frame index.

Pulse/Heartbeat

Scale object size rhythmically using math.sin(t frequency 2 * math.pi) for smooth pulse.

Bounce

Object falls and bounces - use easing functions for landing.

Spin/Rotate

Rotate object around center: image.rotate(angle, resample=Image.BICUBIC)

Fade In/Out

Create RGBA image, adjust alpha channel, or use Image.blend(image1, image2, alpha).

Slide

Move object from off-screen to position with easing.

Zoom

Scale and position for zoom effect - zoom in: scale from 0.1 to 2.0, crop center.

Explode/Particle Burst

Create particles radiating outward with random angles and velocities.

Optimization Strategies

  1. Fewer frames - Lower FPS (10 instead of 20) or shorter duration
  2. Fewer colors - Use 48 colors instead of 128
  3. Smaller dimensions - 128x128 instead of 480x480
  4. Remove duplicates - Skip identical frames

Dependencies

```bash

pip install pillow imageio numpy

```

More from this repository10