Sempre tenho um problema quando descarrego as fotos de uma câmera digital, como os arquivos são muito grandes tenho que converter para um tamanho menor no gimp para poder enviar por e-mail, ou postar aqui no site, fora ter que organizar em pastas com data e nome do evento.
Para automatizar esse processo fiz um shellscript usando zenity e o ImageMagic. A única coisa que você precisa alterar para usar é a pasta destino das fotos na variável destinoFotos logo no início do script.
O que o script faz é pedir a pasta de origem das fotos, descrição e data do evento. Com isso ele vai montar a seguinte estrutura na pasta de destino:
/pasta destino/ano/mes/dia/descricao do evento/originais
/thumbnails
O código segue abaixo, fique a vontade para modificar.
#!/bin/bash # Desenvolvido por Guilherme Jr. <http://www.guilhermejr.net/> # Caminho da pasta destino das fotos destinoFotos=/DADOS/fotos # Função da mensagem de cancelamento cancelamento() { zenity --info --text "Operação cancelada!"; exit 0; } # Caminho da pasta onde estãs as fotos caminho=$(zenity --file-selection --directory --title="FOTOS") # Se cancelar operação if [ -z $caminho ]; then cancelamento fi # Descrição do evento descricao=$(zenity --entry --text "Descrição do evento:" --title="FOTOS") # Se cancelar operação if [ -z $descricao ]; then cancelamento fi # Data do evento data=$(zenity --calendar --text "Selecione data do evento:" --date-format=%d-%m-%Y --title="FOTOS") # Se cancelar operação if [ -z $data ]; then cancelamento fi # Pega o dia mês e ano dia=$(echo $data | cut -d'-' -f1) mes=$(echo $data | cut -d'-' -f2) ano=$(echo $data | cut -d'-' -f3) sizeof() { du -s "$1" | cut -f1; } running(){ ps $1 | grep $1 >/dev/null; } # Total a copiar (em bytes) TOTAL=$(sizeof "$(echo $caminho)") # Checa se existe a pasta do ano do evento se não existir cria if [ ! -d $destinoFotos/$ano ]; then mkdir $destinoFotos/$ano fi cd $destinoFotos/$ano # Checa se existe a pasta do mês do evento se não existir cria if [ ! -d $mes ]; then mkdir $mes fi cd $mes # Checa se existe a pasta do dia do evento se não existir cria if [ ! -d $dia ]; then mkdir $dia fi cd $dia # Cria pasta com o nome do evento mkdir "$descricao" cd "$descricao" # Cria pastas mkdir originais mkdir thumbnails cd originais cp -r "$(echo $caminho)/"* . & CPPID=$! pastaDestinoFotos=$(pwd) ( # enquanto o processo de cópia estiver rodando while running $CPPID; do # quanto já foi copiado? COPIADO=$(sizeof "$(echo $pastaDestinoFotos)") # qual a porcentagem do total? PORCENTAGEM=$((COPIADO*100/TOTAL)) # envia a porcentagem para o dialog echo $PORCENTAGEM # aguarda até a próxima checagem sleep 1 done # cópia finalizada, mostra a porcentagem final echo 100 ) | zenity --progress --percentage=0 --auto-close --text "Copiando fotos... " TOTAL=$(ls | wc -l) I=0 ( for img in $(ls | egrep ".+\.[Jj][Pp][Ee]?[Gg]") ; do convert "$img" -thumbnail 512x384 ../thumbnails/"$img" I=$((I+1)) PORCENTAGEM=$((I*100/TOTAL)) echo $PORCENTAGEM done echo 100 ) | zenity --progress --percentage=0 --auto-close --text "Gerando thumbnails... " zenity --info --text "CONCLUÍDO"
0sem comentários ainda