Composable GIF effects CLI, with reasonable defaults. Made for custom Slack/Discord emoji :)
go get -u github.com/sgreben/yeetgif/cmd/gif
Or download the binary from the releases page.
# Linux
curl -LO https://github.com/sgreben/yeetgif/releases/download/1.13.0/gif_1.13.0_linux_x86_64.tar.gz | tar xz
# OS X
curl -LO https://github.com/sgreben/yeetgif/releases/download/1.13.0/gif_1.13.0_osx_x86_64.tar.gz | tar xz
# Windows
curl -LO https://github.com/sgreben/yeetgif/releases/download/1.13.0/gif_1.13.0_windows_x86_64.zip
unzip gif_1.13.0_windows_x86_64.zip
NOTE: To use the optimize
command, you'll also need the giflossy
fork of gifsicle
installed:
brew install giflossy
<doc/yeet.png | gif fried | gif wobble | gif crop >doc/yeet.gif
Usage: gif [OPTIONS] COMMAND [arg...]
Options:
-n Duplicate a single input image this many times (default 20)
-q, --quiet Disable all log output (stderr)
-d, --delay-ms Frame delay in milliseconds (default 20)
-p, --pad Pad images (default true)
--write-meta Write command line options into output GIF metadata (default true)
Commands:
roll (☭ ͜ʖ ☭)
wobble 🍆( ͡° ͜ʖ ͡°)🍆
pulse ( ͡◉ ͜ʖ ͡◉)
zoom (⌐▀͡ ̯ʖ▀)
shake ˵(˵ ͡⚆ ͜ʖ ͡⚆˵)˵
woke 💯 W O K E F L A R E S ( ͡ 🅱️ ͜ʖ ͡ 🅱️ ) 💯
fried fr͍͈i̗̟̲̻e͕̗d̬ m̷͔͊e̶̪̿m̷̙̈́é̵̤s̷̺͒
hue ( ͡☆ ͜ʖ ͡☆)
tint 🎨༼ຈل͜ຈ༽
resize (° ͜ʖ°)¯\_( ͡☉ ͜ʖ ͡☉)_/¯
crop ┬┴┬┴┤ ͜ʖ ͡°)
optimize 👌( ͡ᵔ ͜ʖ ͡ᵔ )👌
compose (ノ ͡° ͜ʖ ͡°)ノ*:・゚✧
crowd (⟃ ͜ʖ ⟄) ͜ʖ ͡°)( ° ͜ʖ( ° ͜ʖ °)
erase ( ͡° ͜ʖ ͡°)=ε/̵͇̿̿/'̿̿ ̿ ̿ ̿ ̿ ̿
chop ✂️( ͡°Ĺ̯ ͡° )🔪
nop 乁(ᴗ ͜ʖ ᴗ)ㄏ
meta (🧠 ͡ಠ ʖ̯ ͡ಠ)┌
Run 'gif COMMAND --help' for more information on a command.
Usage: gif roll [OPTIONS]
(☭ ͜ʖ ☭)
Options:
-r, --revolutions (default 1)
-s, --scale (default 1)
-p, --phase (default 0)
Usage: gif wobble [OPTIONS]
🍆( ͡° ͜ʖ ͡°)🍆
Options:
-f, --frequency (default 1)
-a, --amplitude (default 20)
-p, --phase (default 0)
-t, --type one of [sine snap saw sticky] (default sine)
--custom comma-separated angles (°), e.g. 0,10,0,60,0 (default [])
Usage: gif pulse [OPTIONS]
( ͡◉ ͜ʖ ͡◉)
Options:
-0, --from (default 1)
-1, --to (default 1.5)
-f, --frequency (default 1)
-p, --phase (default 0)
Usage: gif zoom [OPTIONS]
(⌐▀͡ ̯ʖ▀)
Options:
-0, --from (default 1)
-1, --to (default 1.5)
-c, --custom (default [])
Usage: gif shake [OPTIONS]
˵(˵ ͡⚆ ͜ʖ ͡⚆˵)˵
Options:
-f, --frequency (default 1)
-a, --amplitude (default 8)
-r, --random 🌀 (default 0.5)
Usage: gif woke [OPTIONS] POINTS
💯 W O K E F L A R E S ( ͡ 🅱️ ͜ʖ ͡ 🅱️ ) 💯
Arguments:
POINTS flare locations, JSON, e.g. "[[123,456],[-100,23]]" (default &[])
Options:
-c, --clip clip flares to image alpha (default true)
-t, --type (default full)
-s, --scale (default 0.9)
-u, --hue (default 0.8)
-l, --lightness (default 1)
-a, --alpha (default 0.8)
-p, --alpha-pow (default 2)
--alpha-threshold (default 0.15)
-r, --random 🌀 (default 0.5)
Usage: gif fried [OPTIONS]
fr͍͈i̗̟̲̻e͕̗d̬ m̷͔͊e̶̪̿m̷̙̈́é̵̤s̷̺͒
Options:
--clip (default true)
-j, --jpeg [0,100] (default 84)
-w, --walk 🌀 (default 10)
-i, --iterations (default 1)
-a 🅰️ (default 0.33)
-b 🅱️ (default 0.2)
-c 🆑 (default 0.9)
-n, --noise 🌀️ (default 1)
--noise1 🌀️ (default 0.02)
--noise2 🌀️ (default 0.5)
--noise3 🌀 (default 0.1)
-u, --saturation (default 3)
-o, --contrast (default 6)
-t, --tint tint (default 0.4)
Usage: gif hue [OPTIONS]
( ͡☆ ͜ʖ ͡☆)
Options:
-f, --frequency (default 1)
-a, --amplitude (default 0.1)
Usage: gif tint [OPTIONS]
🎨༼ຈل͜ຈ༽
Options:
-f, --frequency (default 1)
-0, --from (default 0.7)
-1, --to (default 0.9)
-i, --intensity (default 0.95)
Usage: gif resize [OPTIONS]
(° ͜ʖ°)¯\_( ͡☉ ͜ʖ ͡☉)_/¯
Options:
-s, --scale (default 1)
-x, --width width (pixels) (default 0)
-y, --height height (pixels) (default 0)
Usage: gif crop [OPTIONS]
┬┴┬┴┤ ͜ʖ ͡°)
Options:
-t, --threshold (default 0)
Usage: gif optimize [OPTIONS]
👌( ͡ᵔ ͜ʖ ͡ᵔ )👌
Options:
--kb target file size (KB) (default 128)
-x, --width target width (pixels) (default 128)
-y, --height target height (pixels) (default 128)
Usage: gif compose [OPTIONS] INPUT
(ノ ͡° ͜ʖ ͡°)ノ*:・゚✧
Arguments:
INPUT
Options:
-x (default 0)
-y (default 0)
-z, --z-order one of [under over] (default over)
-p, --position one of [center left right top bottom abs] (default center)
-s, --scale (default 1)
Usage: gif crowd [OPTIONS]
(⟃ ͜ʖ ⟄) ͜ʖ ͡°)( ° ͜ʖ( ° ͜ʖ °)
Options:
-n crowd size (default 3)
--flip 🌀 flip (default true)
-x 🌀 x (default 0.5)
-y 🌀 y (default 0.25)
-s, --scale 🌀 [0.0,1.0] (default 0.25)
-r, --rotate 🌀 [0.0,1.0] (default 0.1)
-a, --alpha 🌀 [0.0,1.0] (default 0)
-o, --offset 🌀 [0.0,1.0] (default 1)
Usage: gif erase [OPTIONS]
( ͡° ͜ʖ ͡°)=ε/̵͇̿̿/'̿̿ ̿ ̿ ̿ ̿ ̿
Options:
-x, --sample-x (default 3)
-y, --sample-y (default 3)
-t, --tolerance (default 0.2)
-u (default 1)
-s (default 0.5)
-l (default 1)
Usage: gif chop COMMAND [arg...]
✂️( ͡°Ĺ̯ ͡° )🔪
Commands:
shuffle
duplicate
drop-every
drop-first
drop-last
reverse
Run 'gif chop COMMAND --help' for more information on a command.
Usage: gif nop
乁(ᴗ ͜ʖ ᴗ)ㄏ
Usage: gif meta COMMAND [arg...]
(🧠 ͡ಠ ʖ̯ ͡ಠ)┌
Commands:
show show 🧠
add add 🧠
clear remove 🧠
Run 'gif meta COMMAND --help' for more information on a command.
- Modified copy of
github.com/disintegration/imaging
: MIT License yeetgif
itself: MIT License