domingo, 31 de julho de 2011

Convertendo as fotos de um diretório específico


Olá!
Este post mostra como redimensionar fotos. Por exemplo, se as fotos forem uma matriz 3072x2304, o script reduzirá para 1/4 deste tamanho tornando 768x576.
Deve ser executado nos mesmo diretório que estão as fotos. Neste momento a variável dirorig (diretório de origem) armazena o comando pwd mantendo intacto os arquivos. Deve-se criar o diretório menor um nível abaixo do diretório onde estão as fotos para dar um destino às fotos tratadas (variável dirtrat). Para obter o tamanho de cada arquivo é necessário usar a saída do awk para obter o terceiro campo como entrada do sed para extrair os números no meio de outros caracteres.
Uma diferença com relação ao post anterior é a forma de selecionar os arquivos. No anterior, é usado um for porque é necessário incrementar um contador. O critério de seleção é um ls e um while executa enquanto encontrar o tipo selecionado. Desta forma, para cada arquivo que entra na seleção, executa a ação de redimensionar.


#!/bin/bash

##### Configuracao ####
# diretorio de origem
dirorig="$PWD"
# Entre com o diretorio onde ficarao as fotos tratadas
dirtrat="$PWD/menor"

mkdir "$dirtrat"

ls -1 *.jpg | {
  while read arq
    do
      l=`identify "$arq" | awk '{printf "%s\n",$3}' | sed 's/x/ /' | awk '{printf "%s\n",$1}'`
      c=`identify "$arq" | awk '{printf "%s\n",$3}' | sed 's/x/ /' | awk '{printf "%s\n",$2}'`
      width=`echo $l/4 | bc`        # 1/4 do comprimento
      height=`echo $c/4 | bc`       # 1/4 da altura
  echo linha=$width coluna=$height "$arq"

  if [ "$width" -gt "$height" ]
    then
      convert -resize "$witdh"x"$height" "$arq" "$dirtrat"/"$arq"
      echo "$witdh"x"$height"
    else
      convert -resize "$height"x"$witdh" "$arq" "$dirtrat"/"$arq"
      echo "$height"x"$witdh"
  fi
done
}


Um exemplo de aplicação deste script é fazer com que os anexos dos e-mail sejam bem mais leves. Ou mesmo quando for criar uma página na web, seu carregamento será bem mais rápido do que se for usar a do tamanho original.

Nenhum comentário:

Postar um comentário