add-stamp-photos.sh
#Autor: Cleiton Rodrigues <cleitonrdesouza@gmail.com> 2021-04-16
#aplicação: o script lê uma pasta de fotos e adiciona um carimbo 
#de imagem com as informações contidas nas variáveis.
#os dados adicionados no carimbo são data e hora que são retirados 
#do nome do arquivo de imagem de câmeras no formato IMG_20230414_053232.jpg.
#uso deste script:
#copie o script, de permissao de execucao.
#ajuste as informações nas variáveis

 
#!/bin/bash

#variáveis
localizacao="Bairro Lot. Santo André"
geolocation="-9.370219, -40.545343"
dir_photos="./foto_input"
dir_ouput="./foto_output"
 
function format_datetime() {
  #extraindo data e hora do nome do arquivo no padrao: IMG_20230414_053232.jpg
  #nome_arquivo="IMG_20230414_053232.jpeg"
  nome_arquivo=$1
  var1=$(echo $nome_arquivo | cut -d '_' --output-delimiter=' ' -f 2)
  var2=$(echo $nome_arquivo | cut -d '_' --output-delimiter=' ' -f 3 | cut -d '.' -f 1)
 
  #formatando data e hora
  format_date=$(date -d $var1 "+%d/%m/%Y")
  format_hour=$(echo $var2 | sed -r 's/^(..)(..)(..)$/\1:\2:\3/')
}
 
   #-background "#00000010" \
   #-fill white -stroke black -strokewidth 1 \

#criando o carimbo
function create_stamp() {
  convert -size 590x160 \
   xc:white -background white \
   -fill black  \
   -gravity West -pointsize 30 \
   -interline-spacing -13 -annotate 0 \
   "Local: $localizacao\n
   Geolocalização: $geolocation\n
   Data: $format_date\n
   Hora: $format_hour" \
   carimbo.png
}
 
#estampando carimbo na imagem
function stamp() {
  composite -gravity NorthWest -geometry +10+10 carimbo.png $1 $dir_ouput/$2"_stamped.jpeg"
}
 
# loop para ler diretorio com fotos, gerar carimbo, carimbar fotos e salvar.
for file in $dir_photos/*.{jpg,jpeg,png}; do
  # Obter o nome do arquivo sem o caminho
  filename=$(basename "$file")
  echo $filename
  format_datetime $filename
  create_stamp
  stamp "$dir_photos/$filename" $filename
done