você está aqui: Home  → Arquivo de Mensagens Programação Shell Linux: Inscrições Abertas

Script para redução em lote do tamanho de imagens

Colaboração: Vicente Lima

Data de Publicação: 06 de fevereiro de 2013

Este script realiza a redução em lote do tamanho das imagens localizadas em um diretório e grava a imagem reduzida em um outro diretório indicado na linha de comando.

O script aceita requer três parâmetros para sua execução: a pasta de origem, onde se encontram os arquivos a serem reduzidos, a pasta de destino e o fator de redução da imagem.

Segue o script.

#!/bin/sh

if [ -z $1 ] # se for nulo o primeiro parametro passado para o script
then

echo "\n Script para reduzir tamanho de imagens (*.jpg)
Converte todas as fotos (*.jpg) da pasta indicada para uma pasta indicada.

Indique uma pasta para os novos arquivos que serao criados.
Os novos arquivos terao os mesmos nomes.
CUIDADO: Os arquivos originais somente serao alterados caso voce
indique a pasta de destino igual a de origem.
E' necessario o programa *ImageMagick*

Parametros:

fotoDiminuir <origem> <destino> <porcentagem>

<origem> caminho de onde as fotos estao 
<destino> caminho de destino para fotos menores
(se a pasta de destino nao existir, ela sera criada)
<porcentagem> porcentagem desejada do tamanho da foto original.
(Este parametro eh opcional)
caso nao seja informado a nova imagem tera 50%

Exemplos: 

fotoDiminuir /pastaOrigem /pastaDestino 30 
fotoDiminuir /pastaOrigem /pastaOrigem/menor 
\n"

exit 0
fi

#validar os parametros

# validar existencia da pasta de origem
if [ ! -d "$1" ]; then
echo "\n erro: pasta de origem nao existe. "
echo " $1 -> nao eh uma pasta valida"
exit 1
fi

# validar se foi passado o segundo parametro
if [ -z $2 ];then
echo "\n erro: faltando a pasta de destino."
echo " Voce deve informar uma pasta para as imagens alteradas."
echo " Para ajuda, execute novamente sem nenhum parametro. \n"
exit 1
fi

pastaOrigem=$1
pastaDestino=$2
porcentagem=$3


# caso nao exista, criar diretorio de destino
if [ ! -d "$2" ]; then
echo " criando dir: " "$2"
mkdir "$2"
fi

# por padrao reduz a imagem em 50%
if [ -z $3 ];then
porcentagem="50"
fi

for i in $(ls "$1"/*.jpg |xargs -n1 basename)
do
convert -resize "$porcentagem"% "$1/$i" "$2/$i"
done

exit 0


Veja a relação completa dos artigos de Vicente Lima