Skip to content

Instantly share code, notes, and snippets.

@bgmort
Created September 16, 2021 23:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bgmort/3e79ab016ef2a8a6b85f42d4e68f7335 to your computer and use it in GitHub Desktop.
Save bgmort/3e79ab016ef2a8a6b85f42d4e68f7335 to your computer and use it in GitHub Desktop.
Bash script for watermarking with imagemagick
#!/bin/bash
## This script uses the `convert` command from the imagemagick library to add a watermark to one or more images
WATERMARK= # add your default watermark here
WSIZE="20%"
WPADDING="0"
GRAVITY=SouthEast
OUTDIR=watermarked
DRYRUN=
VERBOSE=
POSITIONAL=()
if [[ $# -eq 0 ]]; then
echo "usage: watermark [options] files"
echo "options:"
echo " -w --watermark $WATERMARK"
echo " -ws --watermark-size $WSIZE"
echo " -wp --watermark-padding $WPADDING"
echo " -g --gravity $GRAVITY"
echo " -o --outdir $OUTDIR"
echo " -d --dry-run"
echo " -v --verbose"
exit 1
fi
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
-w|--watermark)
WATERMARK="$2"
shift # past argument
shift # past value
;;
-ws|--watermark-size)
WSIZE="$2"
shift # past argument
shift # past value
;;
-wp|--watermark-padding)
WPADDING="$2"
shift # past argument
shift # past value
;;
-g|--gravity)
GRAVITY="$2"
shift # past argument
shift # past value
;;
-o|--outdir)
OUTDIR="$2"
shift # past argument
shift # past value
;;
# -l|--lib)
# LIBPATH="$2"
# shift # past argument
# shift # past value
# ;;
-d|--dry-run)
DRYRUN=YES
shift # past argument
;;
-v|--verbose)
VERBOSE=YES
shift # past argument
;;
*) # unknown option
POSITIONAL+=("$1") # save it in an array for later
shift # past argument
;;
esac
done
if [[ $VERBOSE ]]; then
echo "outdir = ${OUTDIR}"
echo "watermark = ${WATERMARK}"
echo "watermark size = ${WSIZE}"
echo "watermark padding = ${WPADDING}"
echo "dry run = ${DRYRUN}"
echo "verbose = ${VERBOSE}"
fi
for INFILE in "${POSITIONAL[@]}"; do
FN=`basename $INFILE`
if [[ $DRYRUN || $VERBOSE ]]; then
echo composite -quality 100 -gravity $GRAVITY -background none \\\( -resize ${WSIZE}x$WSIZE "$WATERMARK" \\\) -geometry +$WPADDING+$WPADDING \"$INFILE\" \"${OUTDIR}/${FN}\"
fi
if [[ -z $DRYRUN ]]; then
composite -quality 100 -gravity $GRAVITY -background none \( -resize ${WSIZE}x$WSIZE "$WATERMARK" \) -geometry +$WPADDING+$WPADDING "$INFILE" "${OUTDIR}/${FN}"
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment