From 2918281b78de57a5147a4c1061f4330b41438deb Mon Sep 17 00:00:00 2001 From: michael Date: Mon, 4 Sep 2023 15:24:31 -0400 Subject: [PATCH] Added cleaned-up version of convertHEICtoJPG.sh script designed to be run interactively or via cron --- bash/jpg | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100755 bash/jpg diff --git a/bash/jpg b/bash/jpg new file mode 100755 index 0000000..8a56216 --- /dev/null +++ b/bash/jpg @@ -0,0 +1,92 @@ +#!/bin/bash + +# Build instructions: +# https://medium.com/@eplt/5-minutes-to-install-imagemagick-with-heic-support-on-ubuntu-18-04-digitalocean-fe2d09dcef1 +# Command: +# https://zwbetz.com/convert-heic-images-to-jpg/ + +# trap ctrl-c and call ctrl_c() +# https://rimuhosting.com/knowledgebase/linux/misc/trapping-ctrl-c-in-bash +trap ctrl_c INT +function ctrl_c() { + echo "${rst}${red}CTRL+C Detected, exiting.${rst}" + exit +} + +padding=" " + +if [[ "${@}" == *"-h"* ]]; then + printf "%s\n" "Command usage:" + printf "$padding%-20s%s\n" "--dir [directory]" "Specify a directory other than current" + printf "$padding%-20s%s\n" "-d --delete" "Delete original files (default keeps originals)" + printf "$padding%-20s%s\n" "-q --quiet" "Suppresses progress output (summaries are still displayed)" + printf "$padding%-20s%s\n" "[--png|--jpg]" "Save as jpg/png (default is jpg)" + printf "$padding%-20s%s\n" "-h" "Print this help message and exit" + exit 0 +fi + +# DEFAULTS +# The folder with the files you want to convert +directory="`pwd`" +# Set to 0 to delete the original .heic files after they are converted +keeporiginals=1 +# Set to 0 for PNG (much larger file size) +saveasjpg=1 +# Suppress progress output +keepquiet=0 + +customdir=0 +for _arg in ${@}; do + if [ $customdir -eq 1 ]; then directory="$_arg"; customdir=2; continue; fi + if [ "$_arg" == "--dir" ]; then customdir=1; continue; fi + if [ "$_arg" == "-d" ]; then keeporiginals=0; continue; fi + if [ "$_arg" == "--delete" ]; then keeporiginals=0; continue; fi + if [ "$_arg" == "-q" ]; then keepquiet=1; continue; fi + if [ "$_arg" == "--quiet" ]; then keepquiet=1; continue; fi + if [ "$_arg" == "--png" ]; then saveasjpg=0; continue; fi + if [ "$_arg" == "--jpg" ]; then saveasjpg=1; continue; fi +done + +# summary: +printf "\n%s\n" "Summary:" +printf "$padding%s\n" "Directory: $directory" +[ $keeporiginals -eq 0 ] && printf "$padding%s\n" "Originals: Delete" || printf "$padding%s\n" "Originals: Keep" +[ $keepquiet -eq 0 ] && printf "$padding%s\n" "Output: Visible" || printf "$padding%s\n" "Output: Hidden" +[ $saveasjpg -eq 0 ] && printf "$padding%s\n" "Save as: PNG" || printf "$padding%s\n" "Save as: JPG" +printf "\n%s" "Press enter to begin or ^c to exit" +read + +# Make sure the mogrify command is available. If this is being +# run as a cron job the which command will fail so we check the +# default location just in case. +which mogrify > /dev/null +if [[ $? -eq 1 ]]; then + if [[ ! -e "/usr/local/bin/mogrify" ]]; then + echo "Unable to run the mogrify command. Please follow the build and installation instructions at the top of the script to install the program on your system." + exit + fi +fi + +filecount=0 +[ $saveasjpg -eq 0 ] && destformat="png" || destformat="jpg" +# Loop over all the .heic files in the folder +for heic in *.heic; do + # Drop the .heic extension and append .jpg instead + img=`echo "$heic" | rev | cut -d. -f2- | rev`.$destformat + if [ -f "$img" ]; then [ $keepquiet -eq 0 ] && printf "%s\n" "Skipping $heic ($img exists)" + else [ $keepquiet -eq 0 ] && printf "%s\n" "Converting $heic to $img"; fi + [ -f "$img" ] || let filecount=filecount+1 + # If the file we are going to make does not exist, run the command to convert it + [ -f "$img" ] || /usr/local/bin/mogrify -format $destformat "$heic" + # If we don't want the originals, give them the axe + [ $keeporiginals -eq 0 ] && rm "$heic" +done + +if [ $filecount -gt 0 ]; then + printf "\n%s\n\n" "Script complete. Converted $filecount heic files to $destformat" +else + if [ $customdir -eq 2 ]; then + printf "\n%s\n\n" "Found 0 heic files to convert. Are you sure you specified the right directory?" + else + printf "\n%s\n\n" "Found 0 heic files to convert. Are you sure you're in the right directory?" +fi