KDialog com Shell Script - Conversão de slides JPG para projetores com suporte a miniaturas de imagens
Apresento um Shell Script para ser utilizado no Kubuntu 12.04 LTS. Após a instalação de alguns aplicativos básicos, este script poderá converter qualquer imagem JPG para dar suporte a cabeçalho Exif com miniatura. No GNU/Linux, o KDialog provê a interface para usuários menos experientes. Este script poderá ser adaptado para outras distribuições, com pequenas alterações.
[ Hits: 11.436 ]
Por: Édio Mazera em 08/09/2012
#!/bin/bash
#Conversor entre formatos de imagem jpg
# Edio Mazera - mazera3@gmail.com
#
################# TESTA SE EXISTE APLICATIVOS ################
dialogo=`which kdialog`
converte=`which convert`
headj=`which jhead`
################ DEFININDO VARIÁVEIS ################################
nome=slide ; ext=jpg ; cont=1 ; output=
#####################################################################
if [ ! $dialogo ]
then
echo "Kdialog nao encontrado. Instale o Kdialog"
exit 1
fi
if [ ! $converte ]
then
echo " Convert não encontrado"
exit 1
fi
if [ ! $headj ]
then
echo " Jhead não encontrado"
exit 1
fi
# MENSAGEM AO USUARIO
kdialog --title "Converte Slides JPG" --msgbox \
"Este programa converte imagem JPG para o formato não entrelaçado \
\ncria cabeçalho mínimo com uma imagem miniatura \
\nusando convert e jhead.\
\nCréditos: Édio Mazera - mazera3@gmail.com." \
0 0
######### PERGUNTA SE DESEJA CONTINUAR ########
kdialog --yesno "Deseja prosseguir com a conversão? \n Escolha a pasta que contem os slides. "
if [ "$?" -ne "0" ]
then
echo " Não! Abortado..."
exit 1
fi
######### VAI AO DIRETORIO ESCOLHIDO ##########
diretorio=$(kdialog --getexistingdirectory "$HOME")
if [ "$?" -ne "0" ]
then
echo " Sem diretorio! Abortado..."
exit 1
fi
cd "$diretorio"
######### SALVAR O DIRETÓRIO ATUAL ################
currentdir=`pwd`
dbusRef=`kdialog --progressbar "Iniciando ..." 12`
qdbus $dbusRef Set "" value 1 ; sleep 2
qdbus $dbusRef setLabelText "verificando a existência de arquivos jpg" ;
###### VERIFICAR SE EXISTE ARQUIVOS JPG ##################
N_JPG=`find -iname "*.jpg" | wc -l`
if [ "$N_JPG" -eq "0" ]
then
kdialog --title "verificando a existência de arquivos" --msgbox "Não existe arquivos jpg! Abortado..."
exit 1
fi
qdbus $dbusRef Set "" value 2 ; sleep 1
###### CONVERTER MAIÚSCUAS PARA MINÚSCULAS################
N_JPG=`find -name "*.JPG" | wc -l`
if [ "$N_JPG" -gt "0" ]
then
qdbus $dbusRef setLabelText "Convertendo de maiúsculo para minúsculo"
for ARQ in *.JPG; do
mv "$ARQ" "`echo $ARQ | tr [A-Z] [a-z]`"
done
else
kdialog --title "CONVERSÃO" --msgbox "Não existe JPG para converter \n de maiúsculo para minúsculo! Continuando..."
sleep 1
fi
qdbus $dbusRef Set "" value 3 ; sleep 1
qdbus $dbusRef setLabelText "removendo arquivos indesejáveis"
####### REMOVE ARQUIVOS INDESEJÁVEIS ####################
N_HTML=`find -iname "*.html" | wc -l`
if [ "$N_HTML" -gt "0" ] # testa se html é maior que zero
then
rm *.{html,HTML}
else
echo "Não existe html!..."
fi
N_PNG=`find -iname "*.png" | wc -l`
if [ "$N_PNG" -gt "0" ]
then
rm *.{png,PNG}
else
echo "Não existe png!..."
fi
qdbus $dbusRef Set "" value 4 ; sleep 1
####### RENOMEANDO SLIDES POR ORDEM ALFABÉTICA ############
N_IMG=`find -iname "img*" | wc -l`
if [ "$N_IMG" -gt "0" ]
then
qdbus $dbusRef setLabelText "renomeando slides img0.jpg a img9.jpg"
for X in $(ls -t *.jpg | grep [g][0-9]\.jpg$); do
Y=$(echo $X | cut -d. -f 1)
NOME=$(echo $Y | cut -dg -f 1)
NUM=$(echo $Y | cut -dg -f 2 )
NOVO=$(echo ${NOME}g0${NUM}.jpg)
mv "$X" "$NOVO";
done;
else
echo "Não existe img*..."
fi
qdbus $dbusRef Set "" value 5 ; sleep 1
qdbus $dbusRef setLabelText "renomeando slides para o formato slide000.jpg"
######### renomeando slides para o formato slide000.jpg ############
cont=1
for i in *.{jpg,JPG}; do
zeros=`printf "%02d\n" ${cont}` # acrescenta 00
nn="tmp${zeros}.jpg" # concatena imagens no formato img00.jpg
mv "$i" "$nn"
[ $? -eq 0 -a "$output" != "nao" ] && echo "[$i] Renomeado para: $nn"
cont=`expr $cont + 1`
done
qdbus $dbusRef Set "" value 6 ; sleep 1
qdbus $dbusRef setLabelText "convertendo slides para formato jpg não entrelaçado"
########## CONVERTE PARA JPG NÃO ENTRELAÇADO ################
convert -interlace none *.jpg $nome.jpg
qdbus $dbusRef Set "" value 7 ; sleep 1
qdbus $dbusRef setLabelText "removendo arquivos temporários tmp00 ..."
############ apaga imagens antigas tmp00.jpg ##############
`rm tmp*`
qdbus $dbusRef Set "" value 8 ; sleep 1
qdbus $dbusRef setLabelText "renomeando slides para o formato slide-00.jpg"
############ RENOMEANDO SLIDES #####################
for X in $(ls -t *.jpg | grep [-][0-9]\.jpg$); do
Y=$(echo $X | cut -d. -f 1)
NOME=$(echo $Y | cut -d- -f 1)
NUM=$(echo $Y | cut -d- -f 2 )
NOVO=$(echo ${NOME}-0${NUM}.jpg)
mv "$X" "$NOVO";
done;
qdbus $dbusRef Set "" value 9 ; sleep 1
qdbus $dbusRef setLabelText "criando cabeçalho mínimo com miniatura"
######## CRIA CABEÇALHO MÍNIMO COM MINIATURA ###############
jhead -mkexif -rgt *.$ext
qdbus $dbusRef Set "" value 10 ; sleep 1
qdbus $dbusRef setLabelText "slides convertidos"
qdbus $dbusRef Set "" value 11 ; sleep 1
qdbus $dbusRef setLabelText "renomeando slides para o formato slide000.jpg"
######## RENOMEANDO SLIDES POR ORDEM ALFABÉTICA ##########
cont=1
for i in *.$ext; do
zeros=`printf "%03d\n" ${cont}`
nn="${nome}${zeros}.${ext}"
mv "$i" "$nn"
[ $? -eq 0 -a "$output" != "nao" ] && echo "[$i] Renomeado para: $nn"
cont=`expr $cont + 1`
done
qdbus $dbusRef Set "" value 12 ; sleep 1
qdbus $dbusRef setLabelText "concluindo..."
######################################################
qdbus $dbusRef close
kdialog --msgbox "Ok, Slides convertidos!"
#copiar para pendrive
kdialog --yesno "Deseja salvar os slides no PENDRIVE agora? \n Escolha o caminho. "
if [ "$?" = "0" ]; then
salvar=$(kdialog --getexistingdirectory "$currentdir")
else
exit 1
fi
if [ "$?" = "0" ]; then
cp *.$ext $salvar ; sleep 1
kdialog --msgbox "Uma cópia dos slides foram salvos no diretório \n $salvar"
else
kdialog --msgbox "Encerrando..." ; sleep 1
exit
fi
exit
################### FIM #############################
OpenSmiles - Criando imagens e figuras de moléculas químicas em formato de qualidade
NetProfiler - Um solução para quem passeia por várias redes
XML de NF-e ou CT-e ou MDF-e - Como validar usando os pacotes de esquemas do Governo
Impressora PDF via Samba para estações Windows
Alguns recursos do BASH para você utilizar em seus programas
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Consertando o áudio com estalos e interrupções no Pipewire
Dá para criar um bom jogo usando a linguagem de programação C? (0)
E como programar um sistema operacional inspirado no próprio linux usa... (3)
REDE WI-FI NÃO APARECE NO LINUX MINT (2)
Como programar um sistema de controle para distribuições linux em c? ... (4)









