Ir para o conteúdo
ou

Software livre Brasil

 Voltar a Blogosfera d...
Tela cheia Sugerir um artigo

Guilherme Jr.: Convertendo fotos para um tamanho menor e organizando em pastas

23 de Maio de 2010, 0:00 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 245 vezes

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"

Fonte: http://www.guilhermejr.net/convertendo-fotos-para-um-tamanho-menor-e-organizando-em-pastas/

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.