-
Contenido pendiente de traducción
Archivos
#!/bin/bash
## Este programa esta sujeto a la licencia GNU/GPL.
#
# En esta página podeis encontrar una traducción en castellano
# http://gugs.sindominio.net/licencias/gples.html
#
# y aquí la versión original http://www.gnu.org/licenses/gpl-3.0.html
# Si se lanza el programa para saber si debe publicarse en la web
# contestamos y salimos
[[ "$1" = "--publico" ]] && echo 'SI' && exit 0
autor='Eduardo Magrané'
mail='eduardo@mamedu.com'
licencia='GNU/GPL 3.0'
web='http://www.mamedu.com'
prog=`basename $0`
version='0.1'
descripcion=" Transformar una imagen a formato jpg con la anchura o altura especificada por el usuario.
Practico para una conversión rápida de imágenes para por ejemplo enviar por email.
Ejemplo de utilización de zenity.
"
pendiente=" Las imágenes transformadas se guardan en el mismo directorio que las originales, estaría bien poder elegir un directorio diferente"
dependencias='convert zenity'
# colores
cnormal="\033[0m"
cerror="\033[1;31m"
caviso="\033[1;37m"
ccomentario="\033[47m\033[1;30m"
cafirmativo="\033[1;32m"
color() { if [ "$var_color" = 'si' ] ; then local c=${1:-$cnormal} ; echo -e "${!c}" ; fi }
# Variables configurables
var_fich_conf="$HOME/.${prog}rc"
desc_var_fich_conf="Archivo de configuración"
var_color=si
desc_var_color='Presentar colores'
var_anchura=450
desc_var_anchura='Anchura por defecto'
var_altura=600
desc_var_altura='Altura por defecto'
var_sufijo='_m'
desc_var_sufijo='Sufijo para imagen transformada'
# Si tenemos fichero de configuración recogemos lo insertamos
[[ -e "$var_fich_conf" ]] && source $var_fich_conf
function info() {
echo
echo "$prog" | sed s/./=/g
echo "$prog"
echo "$prog" | sed s/./=/g
echo
echo ":version: $version"
echo ":licencia: $licencia"
echo ":autor: $autor"
echo ":web: $web"
echo
}
function help() {
echo
echo "uso: $prog
"
echo
if [ -n "$descripcion" ] ; then
echo Descripción
echo -e "$descripcion"
fi
if [ -n "$dependencias" ] ; then
echo 'Programas externos necesarios'
for dep in $dependencias ; do echo -e " - $dep" ; done
echo
fi
if [ -n "${!var_*}" ] ; then
echo 'Variables configurables'
for var in ${!var_*} ; do d="desc_$var" ; echo -e " - ${!d}: ${!var}" ; done
echo
fi
if [ -n "$pendiente" ] ; then
echo Pendiente
echo -e "$pendiente"
fi
}
function comprobar_dependencias() {
local salir=no
echo
echo Comprobar dependencias
for d in $dependencias ; do
s="`whereis $d`"
s="${s/#*:}"
if [ -z "$s" ] ; then
echo " - $d `color cerror`[NO]`color cnormal`"
salir=si
else
echo " - $d `color cafirmativo`[si]`color cnormal`"
fi
done
if [ "$salir" = "si" ] ; then
echo
echo `color cerror`Necesitas instalar los programas no encontrados`color`
exit 1
fi
}
while [ -n "$1" ] ; do
case "$1" in
-h|-help|--help) help ; exit ;;
-info) info ; help ; exit ;;
--dependencias|-d) comprobar_dependencias ; exit ;;
*) break ;;
esac
done
modificar_anchura=0
modificar_altura=0
if [ "$1" = "" ] ; then
# Escoger imágenes
imagenes="$(zenity --title="Selecciona una imagen" --file-selection --multiple )"
s=''
DIFS="$IFS" ; IFS=$'\|'
for f in $imagenes ; do
s="$s \"$f\""
done
IFS="$DIFS"
eval "set - $s"
fi
if [ -z "$1" ] ; then
echo "Sin imágenes"
exit
else
echo Imágenes: $*
fi
if [ "$DISPLAY" != "" ] ; then
SALIDA=$(zenity --list --title "Convirtiendo imágenes" --text "Encoje una opción" --column "Opciones" 'No modificar tamaño' 'Modificar por altura' 'Modificar por Anchura')
echo $SALIDA
if [ "$SALIDA" = "Modificar por Anchura" ] ; then
anchura=$(zenity --title "Anchura" --entry --text "Anchura en pixeles")
[[ "$anchura" != "" ]] && modificar_anchura=1
elif [ "$SALIDA" = "Modificar por altura" ] ; then
altura=$(zenity --title "Altura" --entry --text "Altura en pixeles")
[[ "$altura" != "" ]] && modificar_altura=1
fi
fi
# convertir imágenes a formato jpg
DIFS="$IFS"
IFS=$'\n'
while [ "$1" != "" ] ; do
echo -e "\nConvirtiendo: " $1
# Eliminamos extensión
extension=$(echo $1 | awk -v FS='.' '{print $(NF)}')
echo $extension
cmd="awk -v FS='.${extension}' '{print \$1}'"
f2="$(echo $1 | eval $cmd)"
echo -e "a $f2-peque.jpg"
if [ $modificar_anchura = 1 ] ; then
cmd='convert -geometry x$anchura "$1" "${f2}${sufijo}_an${anchura}.jpg"'
elif [ $modificar_altura = 1 ] ; then
cmd='convert -geometry $altura "$1" "${f2}${sufijo}_al${altura}.jpg"'
else
cmd='convert "$1" "${f2}${sufijo}.jpg"'
fi
if [ "$DISPLAY" = "" ] ; then
eval $cmd
else
eval $cmd | zenity --progress --auto-close
fi
shift 1
done
IFS="$DIFS"