dotfiles/default/bin/monochrome-image.sh

79 lines
2.5 KiB
Bash
Executable file

#!/bin/bash
contrast=0
darkness=10
hex='d7afaf'
hex_alt='111317'
invert_flag=''
darkness_color='black'
help() {
executable_path=$(basename "${0}")
printf "Usage: %s {FLAGS} [FILE]\n\
ARGUMENTS:\n\
-h display this help menu\n\
-i invert original image colors before applying color effects (off by default)\n\
-p [d7afaf] Primary hex color\n\
-s [111317] Secondary hex color\n\
-c [0] Contrast\n\
-d [10] Darkness\n\
FILE Full path to original image file\n" "${executable_path}"
exit 1
}
while getopts "hb:d:c:p:s:i" flag 2>/dev/null; do
case "${flag}" in
h)
help
;;
d)
darkness="${OPTARG}"
;;
b)
darkness_color='white'
darkness="${OPTARG}"
;;
c)
contrast="${OPTARG}"
;;
p)
hex="${OPTARG//#/}"
;;
s)
hex_alt="${OPTARG//#/}"
;;
i)
invert_flag='-negate'
;;
*)
printf "[ERROR] Invalid flag: %s\n\n" "${flag}"
help
;;
esac
done
shift $((OPTIND - 1))
file="${1}"
if [[ -z ${file} || ! -f "${file}" ]]; then
printf '[ERROR] Please provide an image file!\n\n'
help
fi
hex="${hex//#/}"
hex_alt="${hex_alt//#/}"
printf "darkness: %s\ncontrast: %s\nprimary color: #%s\nsecondary color: #%s\nfile: %s\n" "${darkness}" "${contrast}" "${hex}" "${hex_alt}" "${file}"
new_filename=$(basename "${file}")
convert "${file}" ${invert_flag} -contrast-stretch "${contrast}"% -fill "${darkness_color}" -colorize "${darkness}"% -set colorspace Gray -separate -average +level-colors "#${hex_alt},#${hex}" "${new_filename}-recolored-$(date +%Y-%m-%d_%H-%M-%S).jpg"
#convert "${1}" -contrast-stretch 7% -set colorspace Gray -separate -average +level-colors "#111317","#d7afaf" "$(basename ${1})-recolored-$(date +%Y-%m-%d_%H-%M-%S).jpg"
#convert "${1}" -linear-stretch 90% -fill black -colorize 5% -set colorspace Gray -separate -average +level-colors "#111317","#d7afaf" "$(basename ${1})-recolored-$(date +%Y-%m-%d_%H-%M-%S).jpg"
#convert "${1}" -contrast-stretch 5% -fill black -colorize 5% -set colorspace Gray -separate -average +level-colors "#111317","#d7afaf" "$(basename ${1})-recolored-$(date +%Y-%m-%d_%H-%M-%S).jpg"
#convert "${1}" -contrast-stretch 25% -fill black -colorize 25% -set colorspace Gray -separate -average +level-colors "#111317","#d7afaf" "$(basename ${1})-recolored-$(date +%Y-%m-%d_%H-%M-%S).jpg"
#convert "${1}" -contrast-stretch 100% -fill black -colorize 25% -set colorspace Gray -separate -average +level-colors "#111317","#d7afaf" "$(basename ${1})-recolored-$(date +%Y-%m-%d_%H-%M-%S).jpg"