(social-media-framing) Add script

This commit is contained in:
Marcel Kapfer 2024-12-10 18:10:37 +01:00
parent 3c2fab8573
commit 120739bff3
Signed by: mmk2410
GPG key ID: CADE6F0C09F21B09
2 changed files with 89 additions and 0 deletions

View file

@ -0,0 +1,7 @@
#+title: Social Media Framing
A little bash script using [[https://imagemagick.org][ImageMagick]] and [[https://exiftool.org/][exiftool]] for preparing pictures for sharing on social networks. The image given as first argument is used as a source to create the following three variations:
- No changes, except a maximum resolution of 1920px at the longest edge (suffix =-regular=)
- White border to make the image a 1920x1920px square (suffix =-square=)
- White border to make the image a 1080x1920px portrait orientation "story" (suffix =-story=)

View file

@ -0,0 +1,82 @@
#!/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"