Um shell-script para gerar páginas de miniaturas

Todo feriado é a mesma coisa: dezenas de fotos tiradas com as câmeras digitais que possuímos e então divulgamos em nossos sites. Gerar thumbnails (miniaturas) é sempre útil, principalmente quando hospedamos as fotos em um site pessoal, como o fornecido por geocities, por exemplo.

Esse script bash utiliza o ImageMagick para gerar miniaturas das imagens de uma pasta e cria uma página HTML para exibir essas miniaturas. É um tanto simples e até porque não dizer, tosco, mas deve ser útil. Espero que façam bom proveito desse script:

#!/bin/bash

i=0

thumbspage="thumbs.html"

thumbsdir="thumbs"

thumbssuffix="thumbs"

pagename="Página de miniaturas"

force=

verbose=

scriptname=${0##*/}

while getopts 'vhn:p:d:s:f' OPT_LETRA

do

  case $OPT_LETRA in

     'h') echo "SCRIPT para geração de páginas de thumbanils"

   echo

   echo "$scriptname [OPÇÕES]"

   echo

   echo "Opções:"

   echo

   echo "-h               retorna essa mensagem de erro"

   echo "-n [nome_pagina] cabeçalho da página de miniaturas"

   echo "-p [arq_pagina]  nome do arquivo da página"

   echo "-d [dir_thumbs]  diretório onde ficarão as miniaturas das"

   echo "                 imagens do diretorio"

   echo "-s [sufixo]      sufixo a ser adicionado ao nome das miniaturas"

   echo "-v               verboso: mostra todas as informacoes"

   echo "-f               sobrescreve arquivos e diretórios existentes"

   exit 0

   ;;

     'n') pagename=$OPTARG

   ;;

     'd') thumbsdir=$OPTARG

   ;;

     's') thumbssufix=$OPTARG

   ;;

     'p') thumbspage=$OPTARG

   ;;

     'f') force="1"

   ;;

     'v') verbose="1"

esac

done

cabecalho="

<HTML>

<HEAD>

<TITLE>

$pagename

</TITLE>

<BODY>

<TABLE width=100%>

<TR>

<H1 align='center'>$pagename</H1>

"

if [ ! -d "$thumbsdir" ]

then

  mkdir $thumbsdir

else

  if [ -z "$force" ]

  then

      echo "Atenção: Diretório de thumbnails existe! Saindo..."

      exit 1

  fi

fi

if [ -f "$thumbspage" -a -z "$force" ]

then

  echo "Atenção: Arquivo HTML da galeria existe! Saindo..."

  exit 1

fi

echo $cabecalho > $thumbspage

for file in `ls < grep -E -e '(gif<jpg<png<bmp)'`; do

    mainfile=`echo $file < cut -d. -f1`

    thumbfile="${thumbsdir}/${mainfile}_${thumbssuffix}.jpg"

if [ ! -z "$verbose" ];

    then

 echo "Gerando thumbnail para $file: $thumbfile"

    fi

if [ ! -z "$verbose" ];

    then

 args="-verbose"

    fi

convert $args -scale 300x200 $file $thumbfile

case $i in

        0)

            linha="

            </tr>

            <tr>

            <td align='center' valign='center'>

            <a href='$file'>

            <img src='$thumbfile'>

            </a>

            </td>"

            echo $linha >> $thumbspage

            i=1

            ;;

        1)

            linha="

            <td align='center' valign='center'>

            <a href='$file'>

            <img src='$thumbfile'>

            </a>

            </td>"

            echo $linha >> $thumbspage

            i=0

            ;;

     esac

done

rodape='

</TR>

</TABLE>

</HTML>'

echo $rodape >> $thumbspage

Sobre Fábio Emilio Costa
Linux, Free Software, EMACS, Rugby, Indycar, Doctor Who, Harry Potter... Yep, this is me!

4 Responses to Um shell-script para gerar páginas de miniaturas

  1. maison disse:

    cara vc salvou minha vida vlw mesmo!!!

  2. mcacho disse:

    Hola

    Lo he traducido al español, …. muy útil y sencillo

    Obrigado

  3. Lucas Vasconcelos disse:

    Olá, precisei fazer umas no script para funcionar no meu Ubuntu.

    Segue trecho modificado:

    #for file in `ls < grep -E -e ‘(gif<jpg<png<bmp)’`; do
    for file in ` ls *.{jpg,JPG,gif,GIF,png,PNG,bmp,BMP}`; do
    #mainfile=`echo $file < cut -d. -f1`
    mainfile=`echo $file | cut -d. -f1`

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s