Me esqueci de colocar esses 2 scripts para manipular fotos: Caso você seja como eu, e goste que se coloque uma moldura branca em volta das fotos ampliadas para papel, vamos ver um *script* que faça isso automaticamente, de forma que você não tenha que pagar um pouco mais por esse serviço extra na ampliação.
*$ cat emoldura.sh* #!/bin/bash # Esse script coloca molduras em fotografias # Versão para zenity # Larg=5 # quanto maior for este número, mais larga será a moldura Arqs=$(zenity --file-selection --multiple --separator '^') || exit 1 # Agora tenho uma lista de arquivos separados por circunflexo (^) #+ Vamos trocar por ~+= os espaços em branco dos nomes dos arquivos #+ e depois substituir os circunflexos por espaços em branco para #+ criar uma lista para o mogrify rodar todos de uma vez. Arqs=$(sed 's/ /~+=/g;s/\^/ /g' <<< "$Arqs") for CadaUm in $Arqs do CadaUm=$(sed 's/~+=/ /g' <<< $CadaUm) # Repondo os espaços em branco #+ do nome de cada arquivo convert "$CadaUm" -bordercolor white -border $Larg "$CadaUm" done O *script* a seguir serve para girar aquelas fotos que você tirou com a sua câmera na posição vertical, pois estava fotografando uma girafa. ;) *$ cat RodaFoto.sh * #!/bin/bash # Esse script gira um arquivos de imagem. # Versão para zenity # # Lendo os arquivos que serão girados Arq=$(zenity --file-selection --multiple --separator '^') || exit 1 # Agora tenho uma lista de arquivos separados por circunflexo (^) #+ Vamos "escapar" os espaços em branco dos nomes dos arquivos #+ e substituir os circunflexos por espaços em branco para #+ criar uma lista para o mogrify rodar todos de uma vez. Arq=$(sed 's/ /\\ /g;s/\^/ /g' <<< "$Arq") # Montando uma radio list para capturar o ângulo de rotação Ang=$(zenity --list --radiolist --height 240 --title "Ângulo de rotação" \ --text "Escolha o ângulo que sua\n imagem será girada" \ --column Marque --column ângulo true 90 false 180 \ false 270 false "Outro valor") || exit 1 [ "$Ang" = "Outro valor" ] && { Ang=$(zenity --entry --title "Ângulo especial" \ --text "Informe o ângulo entre 1° e 359°") || exit 1 (($Ang < 1 || $Ang > 359)) && { zenity --error --title "Erro" \ --text "O ângulo deveria ser entre 1° e 359°" exit 1 } } mogrify -rotate $Ang "$Arq" 2009/1/30 Julio C. Neves <julione...@openoffice.org> > 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 <china.lis...@gmail.com> > >> 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 <china.lis...@gmail.com <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 > -- 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]