Files
lnx-arch/dots/bin/imgRotate.sh
committer@tuxwarrior 79f9038432 rotate.sh ➔ imgRotate.sh
2026-03-04 11:45:30 -05:00

45 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# 26.03.04 :: klevstul
rotate() {
test_integer() {
if ! [[ $1 =~ ^[123]$ ]]; then
echo "error: variable (times to rotate) must be 1, 2, or 3"
exit 1
fi
}
filename=$1 # ~/syncDir/0_downloads/frodeKlevstul.jpg
extension="${filename##*.}" # jpg
basename_without_ext="${filename%.*}" # ~/syncDir/0_downloads/frodeKlevstul
basename_only="${basename_without_ext##*/}" # frodeKlevstul
times_to_rotate=$2 # how many times to rotate 90 degrees
times_to_rotate=${times_to_rotate:=1} # set to 1 if no value is given
test_integer ${times_to_rotate} # make sure the input (if given from the user) is valid
transpose="transpose=1" # add a transpose for each time to rotate
for ((i = 2; i <= ${times_to_rotate}; i++)); do
transpose+=",transpose=1"
done
# 90 degrees clockwise: transpose=1
# 90 degrees counterclockwise: transpose=2
# `-c:a copy` - ensures audio (if present) is copied without re-encoding (not applicable for images, but safe to include).
ffmpeg -i ${filename} -vf ${transpose} -c:a copy ${basename_without_ext}_rot.${extension}
}
this_file_name=`basename "$0"`
if [ $# -lt 1 ]; then
echo "error: path to file is missing."
echo "usage: '$this_file_name [path_to_file] ([times_to_rotate_90_degrees (1)])'"
exit 1
fi
rotate $1 $2