Added cleaned-up version of convertHEICtoJPG.sh script designed to be run interactively or via cron
This commit is contained in:
		
							parent
							
								
									697e478688
								
							
						
					
					
						commit
						2918281b78
					
				
							
								
								
									
										92
									
								
								bash/jpg
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										92
									
								
								bash/jpg
									
									
									
									
									
										Executable file
									
								
							| @ -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 | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user