Composable GIF effects CLI, with reasonable defaults. Made for custom Slack/Discord emoji :)
go get -u github.com/sgreben/yeetgif/cmd/gif
Either from the releases page, or from the shell:
# Linux
curl -L https://github.com/sgreben/yeetgif/releases/download/${VERSION}/gif_${VERSION}_linux_x86_64.tar.gz | tar xz
# OS X
curl -L https://github.com/sgreben/yeetgif/releases/download/${VERSION}/gif_${VERSION}_osx_x86_64.tar.gz | tar xz
# Windows
curl -LO https://github.com/sgreben/yeetgif/releases/download/${VERSION}/gif_${VERSION}_windows_x86_64.zip
unzip gif_${VERSION}_windows_x86_64.zip
NOTE: To use the optimize
command, you'll also need the giflossy
fork of gifsicle
installed:
brew install giflossy
You'll likely also want to have the binary in your $PATH
. You can achieve this by adding this to your .bashrc (or .zshrc, ...):
export PATH=<directory-containing-the-gif-binary>:$PATH
docker pull quay.io/sergey_grebenshchikov/yeetgif
docker tag quay.io/sergey_grebenshchikov/yeetgif gif # (optional)
<doc/yeet.png gif fried | gif wobble >doc/yeet.gif
gif emoji aubergine | gif wobble >doc/eggplant_wobble.gif
Post a GIF made using yeetgif with either the
#yeetgif
Twitter hashtag- and/or the
#yeetgif
Giphy hashtag - and/or the
#yeetgif
Imgur hashtag
Best Most utterly demented ones end up below!
No entries yet. Be the first :)
${USAGE}
- To find out how a given example was made, try running
gif meta show
on it (e.g.<yeet.gif gif meta show -p
will print the shell pipe of gif effects used to createyeet.gif
). - Use the
--raw
(-r
) option for intermediate pipe steps -- this is faster than re-encoding as GIF every time. Also it's lossless. - Options with bracketed default values (e.g.
--noise
offried
) can take comma-separated values - the points will be spread over the animation length, with intermediate values linearly interpolated. - To figure out what a parameter does, try out some values around its default value, as well as much larger/smaller ones.
- To reduce GIF size, try specifying a smaller number of duplicates for static images (e.g.
gif -n 20
),gif optimize
, and dropping framesgif chop drop every <N>
.
${USAGE_roll}
${USAGE_wobble}
${USAGE_pulse}
${USAGE_zoom}
${USAGE_shake}
${USAGE_woke}
${USAGE_fried}
${USAGE_hue}
${USAGE_tint}
${USAGE_resize}
${USAGE_crop}
${USAGE_optimize}
${USAGE_compose}
${USAGE_crowd}
${USAGE_erase}
${USAGE_chop}
woke | text | fried
${USAGE_text}
emoji | compose <(emoji) | compose <(emoji) | wobble | fried
${USAGE_emoji}
emoji | rain
emoji | roll | rain <(emoji) <(emoji)
emoji | pulse | rain <(emoji) | compose | fried
${USAGE_rain}
${USAGE_cat}
$ <doc/yeet.gif gif meta show
[2018-10-05T13:08:57+02:00] gif fried
[2018-10-05T13:08:58+02:00] gif wobble
[2018-10-05T13:08:58+02:00] gif crop
[2018-10-05T13:08:58+02:00] gif optimize -x 0
$ <doc/yeet.gif gif meta show -p
gif fried | gif wobble | gif crop | gif optimize -x 0
$ <doc/yeet.gif gif meta show --raw
{"appName":"gif","timestamp":"2018-10-05T13:08:57+02:00","args":["fried"],"version":"1.0.0-244bcd73467a0979cb872f0e90ba8a69d4764410"}
{"appName":"gif","timestamp":"2018-10-05T13:08:58+02:00","args":["wobble"],"version":"1.0.0-244bcd73467a0979cb872f0e90ba8a69d4764410"}
{"appName":"gif","timestamp":"2018-10-05T13:08:58+02:00","args":["crop"],"version":"1.0.0-244bcd73467a0979cb872f0e90ba8a69d4764410"}
{"appName":"gif","timestamp":"2018-10-05T13:08:58+02:00","args":["optimize","-x","0"],"version":"1.0.0-244bcd73467a0979cb872f0e90ba8a69d4764410"}
${USAGE_meta}
yeetgif
itself & any original code: MIT License- Modified copy of
github.com/disintegration/imaging
: MIT License - Modified copy of
github.com/fogleman/gg
: MIT License - Roboto Regular TrueType Font: Apache License 2.0
- Twemoji by Twitter: CC BY 4.0
- Modified portion of
github.com/ByteArena/box2d
by ByteArena (Go port)/Erin Catto (C++ original): MIT License