Skip to content

edzob/photo_scale_timestamp_script

Repository files navigation

Timestamp and scale all the images.

These scripts write the time and date from the EXIF date of an image, as text onto that image, and scales the image into a smaller one. And this for a all the images in a dir.

Scripts

This is done via one of these scripts:

  1. timestamp_files.sh, to add a timestamp from the EXIF data to all the image in the input dir and write output to the output dir.
  2. timestamp_file.sh, does the same as 'timestamp_files.sh', but only for 1 file and needs to be called with cli variables.
  3. timesstamp_parallel.sh, does the same as 'timestamp_files.sh', but only in parallel in stead of sequential. Makes use of 'timestamp_file.sh'.
  4. timestamp-rescale.sh, to scale all the images in the input dir into a smaller images in the output dir..
  5. combine-tiemstamp-rescale.sh, runs first the timestamp and then the rescale.

These scripts is using:

  1. 'convert' and 'identify', which is part of 'imagemagick'.
  2. the font Roboto, which you can replace in the script by another.
  3. Part of every GNU ecosystem:
  4. 'bash' (for running script).
  5. 'date' function/application.
  6. 'echo' (for overal usage).
  7. 'tr', 'cut' (for date format).
  8. 'grep', 'ls', 'wc' (for progressbar).

Backlog

  1. [V] count input files
  2. [V] count timestamped files
  3. [V] count scaled files
  4. [V] start, stop, duration time feedback
  5. [-] optimize scale script to use parallelization
  6. [-] run renamejpg from the combine script on the input file directory
  7. [-] if scaled/timestamped dir are with files, by default rename dir (overwrite with cli flag)

You need to install imagemagick.

install

  • sudo apt install imagemagick
  • sudo apt install parallel

test install

  • convert logo: logo.gif
  • convert -version
  • identify -version

List fonts to see if roboto is there.

  • fc-list | grep -i arial
  • convert -list font|grep Liberation-Sans

Used resources

On CONVERT

  1. https://legacy.imagemagick.org/Usage/annotating
  2. https://legacy.imagemagick.org/Usage/draw/#annotate
  3. https://legacy.imagemagick.org/script/command-line-options.php?#annotate

On drawing with ImageMagick

  1. http://www.imagemagick.org/script/command-line-processing.php#geometry

On ImageMagick

  1. https://github.com/ImageMagick/ImageMagick
  2. https://techpiezo.com/linuxinstall-imagemagick-in-ubuntu-20-04-lts

On BASH

  1. https://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-5.html
  2. https://tldp.org/LDP/abs/html/varassignment.html
  3. https://www.cyberciti.biz/faq/bash-loop-over-file
  4. https://linuxize.com/post/bash-concatenate-strings
  5. https://en.wikibooks.org/wiki/Cut
  6. https://www.geeksforgeeks.org/date-command-linux-examples
  7. https://www.cyberciti.biz/faq/check-if-a-directory-exists-in-linux-or-unix-shell
  8. https://www.cyberciti.biz/faq/howto-check-if-a-directory-exists-in-a-bash-shellscript

in regards to Progress bar

  1. https://stackoverflow.com/questions/238073/how-to-add-a-progress-bar-to-a-shell-script
  2. https://stackoverflow.com/questions/12498304/using-bash-to-display-a-progress-indicator
  3. https://stackoverflow.com/questions/38339434/making-simple-shell-progress-bar
  4. https://stackoverflow.com/questions/23630501/how-to-progress-bar-in-bash

in regards to count files

  1. https://stackoverflow.com/questions/11307257/is-there-a-bash-command-which-counts-files

in regards to seconds and minutes

  1. https://stackoverflow.com/questions/8903239/how-to-calculate-time-elapsed-in-bash-script

in regards to parrrel

  1. https://stackoverflow.com/questions/29058741/need-to-cropresize-300000-files-runtime-4-days-how-can-i-speed-up-my-bash
  2. https://www.gnu.org/software/bash/manual/html_node/GNU-Parallel.html
  3. https://www.gnu.org/software/parallel/parallel_tutorial.html
  4. https://www.cyberciti.biz/faq/how-to-run-command-or-code-in-parallel-in-bash-shell-under-linux-or-unix/
  5. https://saveriomiroddi.github.io/Running-shell-commands-in-parallel-via-gnu-parallel
  6. https://unix.stackexchange.com/questions/103920/parallelize-a-bash-for-loop
  7. https://unix.stackexchange.com/questions/101632/running-thousands-of-curl-background-processes-in-parallel-in-bash-script
  8. https://unix.stackexchange.com/questions/575327/can-gnu-parallel-execute-a-bash-script-25000-times-per-seconds-and-parallel-proc
  9. https://opensource.com/article/18/5/gnu-parallel
  10. https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

On CODE

in regards to Timestamp with imagemagick

  1. https://ubuntuforums.org/showthread.php?t=1235238
  2. https://legacy.imagemagick.org/discourse-server/viewtopic.php?t=20213
  3. https://legacy.imagemagick.org/discourse-server/viewtopic.php?t=9155
  4. https://stackoverflow.com/questions/51922126/how-to-format-date-and-time-with-imagemagicks-identify-utility
  5. https://stackoverflow.com/questions/26654709/extract-exif-data-as-text-using-imagemagick

in regards to Resize with imagemagick

  1. https://stackoverflow.com/questions/8707694/batch-resize-images-into-new-folder-using-imagemagick
  2. https://askubuntu.com/questions/135477/how-can-i-scale-all-images-in-a-folder-to-the-same-width
  3. https://askubuntu.com/questions/1068850/resize-multiple-images-with-imagemagick-from-a-folder-to-other-and-keep-the-nam
  4. https://gordonlesti.com/imagemagick-resize-all-images-in-a-directory
  5. https://legacy.imagemagick.org/Usage/resize/#sample
  6. https://askubuntu.com/questions/135477/how-can-i-scale-all-images-in-a-folder-to-the-same-width
  7. https://askubuntu.com/questions/135477/how-can-i-scale-all-images-in-a-folder-to-the-same-width

on FONT

  1. https://askubuntu.com/questions/673615/imagemagick-convert-command-cannot-use-fonts
  2. https://legacy.imagemagick.org/Usage/fonts/
  3. https://codereview.stackexchange.com/questions/88516/bash-script-that-checks-if-font-is-installed-and-installs-it-if-necessary

on Google drive

  1. https://techstreams.medium.com/git-google-drive-simple-git-host-3a84db4fc1fd
  2. https://github.com/labbots/google-drive-upload
  3. https://towardsdatascience.com/uploading-files-to-google-drive-directly-from-the-terminal-using-curl-2b89db28bb06

Example code

of Timestamp

  • identify -format '%[EXIF:*]' image.jpg

  • datetime=$(identify -format "%[EXIF:DateTime]" P1050001.JPG | tr " " "_" | tr ":" "-")

  • inname=$(identify -format "%t" P1050001.JPG)

  • convert P1050001.JPG ${inname}_${datetime}.jpg

  • :: Add the date the photo was taken to the image

  • convert %1 -pointsize 20 -fill black -gravity northwest ^

  • -annotate +0+0 "Date: %DateTime%" "%~p1date_%~n1.jpg"

  • convert fotosin\*.jpg -font Arial -pointsize 32 -fill white -annotate +30+50 %[exif:DateTimeOriginal] \fotosout

of Resize

  • convert -define jpeg:size=250x200 *.jpg -thumbnail 250x200^ -gravity center -extent 250x200 crop/thumbnail-%d.jpeg
  • for i in `ls -1 *jpg`; do convert -resize 50% $i "thumb_$i"; done
  • convert image_file.png -resize 300x300 image_file_resize.png
  • convert "images/*.jpg[250x]" -set filename:base "%[basename]" "images/new_folder/%[filename:base].jpg"

LICENSE

CC BY-SA 4.0 https://github.com/edzob/photo_scale_timestamp_script

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages