From 120739bff3ca4716a435d79002606170669edf67 Mon Sep 17 00:00:00 2001 From: Marcel Kapfer Date: Tue, 10 Dec 2024 18:10:37 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20(social-media-framing)=20Add=20scri?= =?UTF-8?q?pt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- social-media-framing/README.org | 7 ++ social-media-framing/social-media-framing.sh | 82 ++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 social-media-framing/README.org create mode 100755 social-media-framing/social-media-framing.sh diff --git a/social-media-framing/README.org b/social-media-framing/README.org new file mode 100644 index 0000000..6ce4972 --- /dev/null +++ b/social-media-framing/README.org @@ -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=) diff --git a/social-media-framing/social-media-framing.sh b/social-media-framing/social-media-framing.sh new file mode 100755 index 0000000..2a69280 --- /dev/null +++ b/social-media-framing/social-media-framing.sh @@ -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"