shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] script para datar fotos


From: Julio C. Neves
Subject: Re: [shell-script] script para datar fotos
Date: Fri, 30 Jan 2009 20:06:50 -0200

Fala China,
se vc já voltou de férias já posso te dar trabalho ;) Cara, foto no
banheiro? Quero ver essas... ;)

Amigão estou escrevendo um super artigo (é provával que vire livro sobre o
ImageMagick. O sw é muito completo e complexo. Já escrevi umas 40 páginas e
não estou nem no meio do convert. Me cobra pelo e-mail corporativo que e
passo o que escrevi até pere vc me ajudar a depurar. Legal?

Por enquanto vamos resolver o seu problema. Muito melhor que o convert para
isso é o montage, pois ele faz uma borda em 3D com a imagem e rotula a boda,
sem poluir a imagem. Teste a linha abaixo e caso não goste, me fale que te
explico o convert. Mas de cara já te digo: evite o draw e prefira o -label
com -gravity.

   $ montage -frame 5 -geometry +0+0 -label "Foto no banheiro em $Data"
-font Impact-Normal -pointsize 25 -fill Blue -stroke orange -background none
-mattecolor DodgerBlue FotoNoBanheiro.jpg montage.png

Para testar cores de letras, de molduras, profundidade da moldura, ... É
mais fácil usar o cmd display da suíte ImageMagick ao invés de ficar
gravando imagens e depois apagando-as. E aí essa linha ficaria assim:

$ montage -frame 5 -geometry +0+0 -label "Foto no banheiro em $Data" -font
Impact-Normal -pointsize 25 -fill Blue -stroke orange -background none
-mattecolor DodgerBlue FotoNoBanheiro.jpg miff:- | display -

Forte abraço para vc e para a turma de BH.

Julio

PS: Já marcou as próximas férias? ;)




2009/1/30 china <address@hidden>

>   Caros;
>
> Retomando a tarefa depois das férias, e agora mais motivado ainda
> pelas zilhares de fotos tiradas :-)
>
> Matutando sobre a questão, vi que não estava pegando a data da foto,
> mas sim do arquivo, que refletia o timestam de gravação no filesystem.
> Ainda bem que o comando 'cp' preservou as datas de criação no cartão
> de memória, mas não dá para confiar nisso ...
>
> Então descobri o programa 'exiftime', que lê o metadado da foto e
> revela a data em que ela foi tirada, assim fica mais fidedigno :-D
>
> usando o comando 'exiftime -td pessoal/Fotos/*.jpg' ele retorna o seguinte:
> [...]
> pessoal/Fotos/banheiro_012.jpg:
> Image Digitized: 2008:08:10 21:33:55
>
> pessoal/Fotos/banheiro_013.jpg:
> Image Digitized: 2008:08:10 21:34:04
>
> pessoal/Fotos/galo.jpg:
> Image Digitized: 2007:09:07 10:44:17
> [...]
>
> Ou seja, lista todas as fotos e mostra a data e hora de criação.
>
> O que tentei fazer:
>
> for img in $(exiftime -td *.jpg); do
> convert -font helvetica -fill white -stroke black -pointsize 12
> -draw 'text 2200,1900 "$img"' ${img}datada.jpg
> done
>
> Então retorna o erro como no exemplo:
>
> 'convert: missing an image filename `10:44:17datada.jpg'.'
>
> e não processa nada, apenas criando os arquivos em vazios. Creio que o
> problema está na passagem do nome do arquivo para o convert.
>
> O que acham? Alguém tem uma luz para destara esse nó?
>
> PS: Numa de minhas buscas encontrei diversos softwares que fazem
> gravação de data nas fotos, mas todos proprietários e feitos apenas
> para windowz. O f-spot que vem no Ubuntu lê estes metadados e organiza
> as fotos em pastas justamente pela data de criação, mas não tem a
> opção de gravar a data na foto.
>
> 2008/12/19 chinabhz <address@hidden <china.listas%40gmail.com>>:
> > Caros;
> > Tenho uma câmera digital que não tem a função de gravar a data nas
> > fotos (sic)!
> > Daí me surgiu a idéia de criar um script que pega a data do arquivo da
> > foto e a escreve no arquivo. Não tenho conhecimento suficiente para
> > concluir a tarefa, por isso peço ajuda de vocês.
> >
> > O que já consegui:
> > 1) Usando o ls+awk consegui ler a pasta onde estão as fotos e retornar
> > apenas a data e hora de cada um
> > ls -lh * | awk {'print $6" "$7'}
> >
> > 2) usando o convert, do imagemagik, consegui gravar a data na foto em
> > UMA foto:
> >
> > convert -font helvetica -fill white -stroke black -pointsize 12 -draw
> > 'text 2200,1900 "datadafoto"' -stroke none -draw 'text 2200,1900
> > "datadafoto"' foto.jpg fotodatada.jpg
> >
> > O que preciso: que o scritp leia o diretório de fotos e corte apenas a
> > data e hora e passe como variavel para o convert fazer a datagem de
> > todas de uma vez, sendo que na linha de comando onde está foto.jpg
> > ficaria a variável que seria cada data de cada foto.
> >
> > Como minha câmera é muito comum, acredito que esse script seja de
> > interesse geral ... Tem como fazer??
> >
> > O que já fiz e não deu certo foi:
> >
> > #!/bin/bash
> > $fotos="ls -lh * | awk {'print $6" "$7'}"
> > for img in $fotos; do
> > convert -font helvetica -fill white -stroke black -pointsize 12 -draw
> > 'text 2200,1900 "datadafoto"' -stroke none -draw 'text 2200,1900
> > "datadafoto"' $img $imgdatada
> >
> >
>  
>



-- 
Abração,
Julio
Cursos de Shell e Zenity nos finais de semana:
- Em SP ligue (11) 2125-4747;
- Em DF ligue (61) 3223-3000;
- Turmas fechadas em outras cidades ligue (21) 8112-9988


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]