Composable GIF effects CLI, with reasonable defaults. Made for custom Slack/Discord emoji :)
go get -u github.com/sgreben/yeetgif/cmd/gifEither 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.zipNOTE: To use the optimize command, you'll also need the giflossy fork of gifsicle installed:
brew install giflossyYou'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>:$PATHdocker pull quay.io/sergey_grebenshchikov/yeetgif
docker tag quay.io/sergey_grebenshchikov/yeetgif gif # (optional)<doc/yeet.png gif fried | gif wobble >doc/yeet.gifgif emoji aubergine | gif wobble >doc/eggplant_wobble.gifPost a GIF made using yeetgif with either the
#yeetgifTwitter hashtag- and/or the
#yeetgifGiphy hashtag - and/or the
#yeetgifImgur 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 showon it (e.g.<yeet.gif gif meta show -pwill 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.
--noiseoffried) 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}
yeetgifitself & 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/box2dby ByteArena (Go port)/Erin Catto (C++ original): MIT License























