Skip to content
This repository was archived by the owner on Nov 8, 2018. It is now read-only.

sgreben/ezrgif

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ezrgif

NOTE: I have since rewritten this tool in Go as yeetgif. This repo is no longer maintained.

Docker Repository on Quay

GIF effects from the command-line. (A sh wrapper around imagemagick and the giflossy fork of gifsicle)

terminal

Get it

Docker image (easiest)

Pull & tag:

docker pull quay.io/sergey_grebenshchikov/ezrgif docker tag quay.io/sergey_grebenshchikov/ezrgif ezrgif

You can now simply docker run -i ezrgif.

From source

You can also just get the gif.sh. This probably starts up a bit faster than the Docker option, but you need to take care of the dependencies yourself.

$ curl -sSL https://raw.githubusercontent.com/sgreben/ezrgif/master/gif.sh > gif $ chmod +x gif

As to the dependencies: you will need to install imagemagick, as well as the --lossy fork of gifsicle:

Install prerequisites (Mac)

$ brew install imagemagick giflossy

Install prerequisites (linux)

See Dockerfile

Use it

Docker image

$ docker run --rm -i ezrgif -h Usage: gif.sh [ -s DEFAULT_FINAL_SIZE ] (roll | wobble | pulse | zoom | shake | woke | fried | optimize) [ -h ] [ OPTIONS ] defaults: DEFAULT_FINAL_SIZE=128x128

From source

$ ./gif -h Usage: gif.sh [ -s DEFAULT_FINAL_SIZE ] (roll | wobble | pulse | zoom | shake | woke | fried | optimize) [ -h ] [ OPTIONS ] defaults: DEFAULT_FINAL_SIZE=128x128

Examples

If you're using Docker, put this in your shell aliases:

$ alias gif="docker run -i --rm ezrgif"

Pulse+wobble+optimize

$ <doc/moth.png gif pulse -0 1.0 -1 1.5 -n 20 | gif wobble -d 3x100 -p 100% -c 100% | gif optimize > doc/moth.gif

beforeafter

Wobble

$ <doc/eggplant.png gif wobble -c 60% -n 20 > doc/eggplant.gif

beforeafter

Woke+optimize

$ <doc/moth.png gif woke -f -n 10 -y -15 -z 60% | gif optimize > doc/woke.gif

beforeafter

Effects

roll

roll

roll [-p PAD_TO] [ -c CUT_TO ] [ -d DELAY ] [ -n NUM_FRAMES ] [ -r REVOLUTIONS ] [ -s FINAL_SIZE ] INPUT defaults: PAD_TO=200% CUT_TO=50% DELAY=2x100 NUM_FRAMES=1 REVOLUTIONS=1 FINAL_SIZE=128x128 

wobble

wobble

wobble [-p PAD_TO] [ -c CUT_TO ] [ -d DELAY ] [ -n NUM_FRAMES ] [ -a AMPLITUDE ] [ -f FREQUENCY ] [ -s FINAL_SIZE ] INPUT defaults: PAD_TO=200% CUT_TO=50% DELAY=2x100 NUM_FRAMES=1 AMPLITUDE=8 FREQUENCY=1 FINAL_SIZE=128x128 

pulse

pulse

pulse [-p PAD_TO] [ -c CUT_TO ] [ -d DELAY ] [ -n NUM_FRAMES ] [ -0 SCALE_MIN ] [ -1 SCALE_MAX ] [ -f FREQUENCY ] [ -s FINAL_SIZE ] INPUT defaults: PAD_TO=200% CUT_TO=50% DELAY=2x100 NUM_FRAMES=1 SCALE_MIN=0.5 SCALE_MAX=1.0 FREQUENCY=1 FINAL_SIZE=128x128 

zoom

zoom

zoom [-p PAD_TO] [ -c CUT_TO ] [ -d DELAY ] [ -n NUM_FRAMES ] [ -0 SCALE_MIN ] [ -1 SCALE_MAX ] [ -e POWER ] [ -s FINAL_SIZE ] INPUT defaults: PAD_TO=200% CUT_TO=50% DELAY=2x100 NUM_FRAMES=1 SCALE_MIN=0.5 SCALE_MAX=1.0 POWER=2.0 FINAL_SIZE=128x128 

shake

shake

shake [-p PAD_TO] [ -c CUT_TO ] [ -d DELAY ] [ -n NUM_FRAMES ] [ -x AMPLITUDE_X ] [ -y AMPLITUDE_Y ] [ -f FREQUENCY_X ] [ -g FREQUENCY_Y ] [ -o PHASE_Y ] [ -r PHASE_RANDOM ] [ -s FINAL_SIZE ] INPUT defaults: PAD_TO=200% CUT_TO=50% DELAY=2x100 NUM_FRAMES=1 AMPLITUDE_X=10 AMPLITUDE_Y=10 FREQUENCY_X=2 FREQUENCY_Y=2 PHASE_Y=pi/2 FINAL_SIZE=128x128 PHASE_RANDOM=pi 

woke

woke

woke [ -f | -v ] [ -m MODE ] [ -n FLARE_FRAMES ] [ -x FLARE_X ] [ -y FLARE_Y ] [ -z FLARE_SCALE ] [ -a FLARE_ALPHA ] [ -r FLARE_ANGLE_RANDOM ] [ -t FLARE_TRANSFORM ] [ -d DELAY ] [ -s FINAL_SIZE ] INPUT defaults: MIRROR_X=0 MIRROR_Y=0 MODE=linear-light FLARE_FRAMES= FLARE_X=-33 FLARE_Y=-5 FLARE_SCALE=90% FLARE_ALPHA=0.5 FLARE_ANGLE_RANDOM=30 FLARE_TRANSFORM=0 DELAY=2x100 FINAL_SIZE=128x128 available -m modes: Atop, Blend, Blur, Bumpmap, ChangeMask, Clear, ColorBurn, ColorDodge, Colorize, CopyAlpha, CopyBlack, CopyBlue, CopyCyan, CopyGreen, Copy, CopyMagenta, CopyRed, CopyYellow, Darken, DarkenIntensity, DivideDst, DivideSrc, Dst, Difference, Displace, Dissolve, Distort, DstAtop, DstIn, DstOut, DstOver, Exclusion, HardLight, HardMix, Hue, In, Intensity, Lighten, LightenIntensity, LinearBurn, LinearDodge, LinearLight, Luminize, Mathematics, MinusDst, MinusSrc, Modulate, ModulusAdd, ModulusSubtract, Multiply, None, Out, Overlay, Over, PegtopLight, PinLight, Plus, Replace, Saturate, Screen, SoftLight, Src, SrcAtop, SrcIn, SrcOut, SrcOver, Stereo, VividLight, Xor, 

fried

fried

fried [ -d DISTORT ] [ -c CUT_TO ] [ -o COLOR ] [ -t TINT ] [ -b BLACK_POINT ] [ -w WHITE_POINT ] [ -u SATURATION ] [ -l LOSS ] [ -m COLORS ] [ -s FINAL_SIZE ] [ INPUT ] defaults: DISTORT_X=0 DISTORT_Y=0 DISTORT=0.5 CUT_TO=60% COLOR=orange TINT=80% SATURATION=150 BLACK_POINT=25 WHITE_POINT=85 COLORS=133 LOSS=3000 FINAL_SIZE=128x128 

optimize

optimize [ -g TARGET_GEOMETRY ] [ -s TARGET_SIZE_KB ] [ INPUT ] defaults: TARGET_GEOMETRY=128x128 TARGET_SIZE_KB=128