82 lines
1.8 KiB
Bash
Executable file
82 lines
1.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
INFO="\033[0;30m\033[47m"
|
|
START="\033[0;30m\033[44m"
|
|
DONE="\033[0;30m\033[42m"
|
|
ERROR="\033[0;30m\033[41m"
|
|
NC="\033[0m"
|
|
|
|
log_info() {
|
|
echo -e "${INFO} INFO ${NC} $1"
|
|
}
|
|
|
|
log_start() {
|
|
echo -e "${START} START ${NC} $1"
|
|
}
|
|
|
|
log_done() {
|
|
echo -e "${DONE} DONE ${NC} $1"
|
|
}
|
|
|
|
log_error() {
|
|
echo -e "${ERROR} ERROR ${NC} $1"
|
|
}
|
|
|
|
log_info "Welcome to the social media framing script."
|
|
log_info "We're using the power of imagemagick and exiftool"
|
|
|
|
set +u
|
|
if [[ -z "$1" ]]; then
|
|
log_error "Missing filename argument."
|
|
exit 1
|
|
fi
|
|
set -u
|
|
|
|
if [[ ! -f "$1" ]]; then
|
|
log_error "File with filename $1 not found."
|
|
exit 1
|
|
fi
|
|
|
|
filename="$(basename "$1")"
|
|
extension="${filename##*.}"
|
|
path="$(dirname "$1")/${filename%%.*}"
|
|
|
|
regular="$path""-regular.""$extension"
|
|
square="$path""-square.""$extension"
|
|
story="$path""-story.""$extension"
|
|
|
|
if [[ ! -f "$regular" ]]; then
|
|
log_start "Creating regular framing"
|
|
magick "$1" -resize "1920x1920>" "$regular"
|
|
log_start "Fixing EXIF metadata"
|
|
exiftool -q -tagsFromFile "$1" "$regular"
|
|
fi
|
|
|
|
if [[ ! -f "$square" ]]; then
|
|
log_start "Creating square framing"
|
|
magick -define jpeg:size=1920x1920 "$1" \
|
|
-thumbnail '1890x1890' \
|
|
-gravity center \
|
|
-crop 1920x1920+0+0\! \
|
|
-flatten \
|
|
"$square"
|
|
log_start "Fixing EXIF metadata"
|
|
exiftool -q -tagsFromFile "$1" "$square"
|
|
fi
|
|
|
|
if [[ ! -f "$story" ]]; then
|
|
log_start "Creating story framing"
|
|
magick -define jpeg:size=1080x1920 "$1" \
|
|
-thumbnail '1050x1890' \
|
|
-gravity center \
|
|
-crop 1080x1920+0+0\! \
|
|
-flatten \
|
|
"$story"
|
|
log_start "Fixing EXIF metadata"
|
|
exiftool -q -tagsFromFile "$1" "$story"
|
|
fi
|
|
|
|
exiftool -q -delete_original! "$(dirname "$1")"
|
|
log_done "Finished creating framed images"
|