.dotfiles/scripts/make-gif.sh

48 lines
795 B
Bash
Executable File

#!/bin/sh
rate=5
scale="scale=-1:-1:flags=lanczos"
usage() {
echo "Usage: $0 [-i <string>] [-s <integer>] [-r <integer>]"
echo "Options:"
echo " i input file"
echo " s width of the resulting gif"
echo " r frame rate of the resulting gif"
}
while getopts "s: r: i: h" args; do
case "$args" in
i)
file_name=${OPTARG}
;;
s)
echo $OPTARG
if [[ $OPTARG =~ ^[0-9]+$ ]]; then
scale="scale=${OPTARG}:-1:flags=lanczos"
else
echo "Error: -s expects an integer." >&2
exit 1
fi
;;
r)
if [[ $OPTARG =~ ^[0-9]+$ ]]; then
rate=${OPTARG}
else
echo "Error: -r expects an integer." >&2
exit 1
fi
;;
h | * | \?)
usage
exit
;;
esac
done
if [ $OPTIND -eq 1 ]; then
usage
exit
fi
ffmpeg -r ${rate} -i ${file_name}-%d.jpg -vf "${scale}" ${file_name}.gif