$ (path al script)/enmarca xx "(Lugar)"
[colegota@alforjas fotos]$ /home/colegota/talleres/enmarca img "Mi pueblo"
for IMAGEN in $1*.jpg
do
echo $IMAGEN
cp $IMAGEN f-$IMAGEN
IMAGEN=f-$IMAGEN
convert $IMAGEN -resize 104%x106% 0marco.jpg
mogrify -fill black -colorize 60% 0marco.jpg
mogrify -mattecolor "#ffa200" -frame 2x2+1+1 $IMAGEN
composite -gravity center $IMAGEN 0marco.jpg 0final.jpg
convert 0final.jpg\
-fill "#ffa200" -font /usr/share/fonts/ttf/vera/VeraBI.ttf -draw "gravity southwest text 5,2 '$2'"\
-fill "#ffa200" -draw "gravity southeast text 5,2 'http://mapamundi.info/licenciaCCbysa'"\
$IMAGEN
done
Así que creo que se empiezan a imponer unos "comos" de ImageMagick.
Así que creo que se empiezan a imponer unos "comos" de ImageMagick.
¿De imagemagick o de bash-scripting orientado a imagemagick?
Si es de lo segundo me gustaría darte un par de consejos para mejorar tu script:
Cuando metas nombres de ficheros en una variable refiérete a ella siempre entrecomillándola correctamente, usa "$IMAGEN" en lugar de $IMAGEN para evitar que nombres de ficheros con espacios sean expandidos a dos palabras.
Cuando uses jpg (algoritmo de compresión con pérdida), procura hacer todo lo posible en un solo paso, la mayorái de los comandos de imagemagick se pueden concatenar, si hacemos un paso, guardamos el jpg, hacemos otro, volvemos a guardar... acabamos teniendo una gran pérdida de información.
for IMAGEN in $1*.jpg
do
echo "$IMAGEN"
cp "$IMAGEN" f-"$IMAGEN"
IMAGEN=f-"$IMAGEN"
convert "$IMAGEN" -resize 104%x106%\
-fill black -colorize 60%\
-fill "#ffa200" -font /usr/share/fonts/TTF/VeraBI.ttf -pointsize 24 -draw "gravity southwest text 5,2 '$2'"\
-fill "#ffa200" -draw "gravity southeast text 5,2 'http://mapamundi.info/licenciaCCbysa'"\
0marco.jpg
mogrify -mattecolor "#ffa200" -frame 2x2+1+1 "$IMAGEN"
composite -gravity center $IMAGEN 0marco.jpg "$IMAGEN"
done
¿Se te ocurre como reducirlo más? ¿Se pueden encadenar comandos por "pipe"?
convert imagen-base imagen-mascara -compose metodo -composite imagen destino
for IMAGEN in $1*.jpg;
do
echo "$IMAGEN"
convert \( "$IMAGEN" -resize 104%x106%\
-fill black -colorize 60%\
-fill "#ffa200" -font /usr/share/fonts/TTF/VeraBI.ttf -pointsize 24 -draw "gravity southwest text 5,2 '$2'"\
-fill "#ffa200" -draw "gravity southeast text 5,2 'http://mapamundi.info/licenciaCCbysa'" \)\
\( $IMAGEN -mattecolor "#ffa200" -frame 2x2+1+1 "$IMAGEN" -gravity center \) \
-compose src-in -composite f-"$IMAGEN"
done
enmarca [--tit "Titulo de la foto"] [--font "Fuente"] [--copyright "Texto del copyright"] Img-1 [ ... Img-n]
\( $IMAGEN -mattecolor "#ffa200" -frame 2x2+1+1\) "$IMAGEN" -gravity center \
El script es un buen intento :) pero no me hace lo que quería. Hay un despiste en el último paréntesis que debería ir enCódigo: [Seleccionar]\( $IMAGEN -mattecolor "#ffa200" -frame 2x2+1+1\) "$IMAGEN" -gravity center \
aunque supongo que es un despiste de tecleo. Pero lo importante es que no me puedo quitar (creo) la 0marco.jpg porque en realidad lo que hace mi script es hacer esa imagen más grande para que al poner la original (con el filete dorado) encima, lo que sobra de la grande haga de marco. Tal vez debiera haber explicado el script antes de empezar... :)o
Respecto a los parámetros, pues mucho mejor, claro. Lo que pasa es que yo soy el primero que uso el bash con cuatro cosas y tendría que repasar para hacerlo chachi. De hecho soy tan vago que tengo diferentes copias con los textos o comandos modificados. ;)
#! /bin/bash
TIT="Prueba de título"
COPY="http://mapamundi.info/licenciaCCbysa"
FONT="/usr/share/fonts/TTF/VeraBI.ttf"
TAMANO="20"
while [ ! -z "$1" ]; do
PARAM="$1"
case $PARAM in
"--help"|--usage|-h)
echo ""
echo "Uso:"
echo ""
echo " $0 --help|--usage|-h Muestra esta ayuda"
echo " $0 [opciones] img-1 [... img-n] [... [opciones] img-n1 [... img-nn]]"
echo ""
echo " opciones disponibles:"
echo ""
echo " --titulo|-t \"Título que aparece abajo a la izquierda\""
echo " --copyright|-c \"Mensaje de copyright que aparece a la derecha\""
echo " --font|-f Estilo de letra o fichero de fuente .ttf"
echo " --tamano|-s Tamaño de la letra en puntos"
echo ""
exit 0
;;
"--titulo"|"-t")
shift
TIT="$1"
;;
"--copyright"|"-c")
shift
COPY=$1
;;
"--font"|"-f")
shift
FONT=$1
;;
"--tamano"|"-s")
shift
TAMANO=$1
;;
*)
if [ -f "$PARAM" ]; then
IMAGEN="$PARAM"
echo "$IMAGEN -> $TIT - $COPY - $FONT - $TAMANO"
convert \( "$IMAGEN" -resize 104%x106%\
-fill black -colorize 60%\
-fill "#ffa200" -font "$FONT" -pointsize "$TAMANO"\
-draw "gravity southwest text 5,2 '$TIT'"\
-fill "#ffa200" -draw "gravity southeast text 5,2 '$COPY'" \)\
\( "$IMAGEN" -mattecolor "#ffa200" -frame 2x2+1+1 \) -gravity center \
-compose src-in -composite f-"$IMAGEN"
fi
;;
esac
shift
done
./enmarca -t "Paisaje nevado" foto1.jpg foto2.jpg foto3.jpg -t Nocturno fotonocturna1.jpg fotonocturna2.jpg
./enmarca -c "http://creativecommons.org/licenses/by-sa/2.1/es/" -t "Ada jugando con una pompa" -f /usr/share/fonts/TTF/luximbi.ttf -s 18 ada*.jpg
(http://www.fotolibre.org/albums/userpics/10007/normal_f-ada-pompa3.jpg) (http://www.fotolibre.org/albums/userpics/10007/f-ada-pompa3.jpg) | (http://www.fotolibre.org/albums/userpics/10007/thumb_ada-pompa2.jpg) (http://www.fotolibre.org/albums/userpics/10007/ada-pompa2.jpg) (Foto original) |
Me parece muy interesante lo de tener un script para hacer bordes, pero, os estoy leyendo y no me entero de mucho. :girl_sad:
Se agradece un manual para torpes. Yo he llegado a que ImageMagick es un programa para trabajar con imagenes (fotos) en consola,
«comando» -help
pero ¿dónde se coloca el script? ¿en la carpeta de ImageMagick de /usr/share?
bash «nombre_del_script» parámetros ....
#! /bin/bash
Ya no es necesario que le pongas el bash delante, pero tendrás que poner el path completo de dónde está para ejecutarlo, por ejemplo/home/redy/pruebas/«nombre_del_script» parámetros ....
O si está en el mismo directorio en el que estás trabajando simplemente:./«nombre_del_script» parámetros ....
echo "$PATH" | tr : '\n'
«nombre_del_script» parámetros ....
echo " $0 [opciones] img-1 [... img-n] [... [opciones] img-n1 [... img-nn]]
#! /bin/bash
TIT="Prueba de título"
COPY="http://mapamundi.info/licenciaCCbysa"
FONT="/usr/share/fonts/TTF/VeraBI.ttf"
TAMANO="20"
while [ ! -z "$1" ]; do
PARAM="$1"
case $PARAM in
"--help"|--usage|-h)
echo ""
echo "Uso:"
echo ""
echo " $0 --help|--usage|-h Muestra esta ayuda"
echo " $0 [opciones] img-1 [... img-n] [... [opciones] img-n1 [... img-nn]]"
echo ""
echo " opciones disponibles:"
echo ""
echo " --titulo|-t \"Título que aparece abajo a la izquierda\""
echo " --copyright|-c \"Mensaje de copyright que aparece a la derecha\""
echo " --font|-f Estilo de letra o fichero de fuente .ttf"
echo " --tamano|-s Tamaño de la letra en puntos"
echo ""
exit 0
;;
"--titulo"|"-t")
shift
TIT="$1"
;;
"--copyright"|"-c")
shift
COPY=$1
;;
"--font"|"-f")
shift
FONT=$1
;;
"--tamano"|"-s")
shift
TAMANO=$1
;;
*)
if [ -f "$PARAM" ]; then
IMAGEN="$PARAM"
echo "$IMAGEN -> $TIT - $COPY - $FONT - $TAMANO"
convert \( "$IMAGEN" -resize 104%x106%\
-fill black -colorize 60%\
-fill "#ffa200" -font "$FONT" -pointsize "$TAMANO"\
-draw "gravity southwest text 5,2 '$TIT'"\
-fill "#ffa200" -draw "gravity southeast text 5,2 '$COPY'" \)\
\( "$IMAGEN" -mattecolor "#ffa200" -frame 2x2+1+1 \) -gravity center \
-compose src-in -composite f-"$IMAGEN"
fi
;;
esac
shift
done
fale, este ya casi funciona. :P No es por fastidiar, es broma. Lo que pasa es que faltan unas comillas dobles al final de esta línea:Código: [Seleccionar]echo " $0 [opciones] img-1 [... img-n] [... [opciones] img-n1 [... img-nn]]
Es multi-plataforma, aunque los ejemplos que muestro aquí son para GNU/Linux, adaptar los scripts a otro sistema no necesitan más cambio que el de la forma de identificar los parámetros y poco más.
Bueno, si la otra plataforma es windows creo que lo mejor es instalar cygwin (http://www.cygwin.com/), con lo que tendras el bash, el propio imagemagick y todas las utilides que solemos usar en linux, y así podras usar los scripts que ponemos aquí sin ninguna modificación...
#! /bin/bash
TIT="(C) Redy Rodríguez"
COPY="http://creativecommons.org/licenses/by-sa/2.5/es"
FONT="/usr/share/fonts/TTF/VeraBI.ttf"
TAMANO="20"
while [ ! -z "$1" ]; do
PARAM="$1"
case $PARAM in
"--help"|--usage|-h)
echo ""
echo "Uso:"
echo ""
echo " $0 --help|--usage|-h Muestra esta ayuda"
echo " $0 [opciones] img-1 [... img-n] [... [opciones] img-n1 [... img-nn]]"
echo ""
echo " opciones disponibles:"
echo ""
echo " --titulo|-t \"Título que aparece abajo a la izquierda\""
echo " --copyright|-c \"Mensaje de copyright que aparece a la derecha\""
echo " --font|-f Estilo de letra o fichero de fuente .ttf"
echo " --tamano|-s Tamaño de la letra en puntos"
echo " --tamanomarco|-g Tamaño del marco en pixels"
echo ""
exit 0
;;
"--titulo"|"-t")
shift
TIT="$1"
;;
"--copyright"|"-c")
shift
COPY=$1
;;
"--font"|"-f")
shift
FONT=$1
;;
"--tamano"|"-s")
shift
TAMANO=$1
;;
"--tamanomarco"|"-g")
shift
tamanomarco=$1
;;
*)
if [ -f "$PARAM" ]; then
IMAGEN="$PARAM"
imageSize="$(identify -format "%w %h" "$IMAGEN")"
imageX="${imageSize%% *}"
imageY="${imageSize##* }"
if [ -z $tamanomarco ]; then
if [ $imageX -gt $imageY ]; then MAXsize=imageX; else MAXsize=imageY; fi
INCR="$(( MAXsize / 33))"
if [ "$INCR" -lt 28 ]; then INCR=28; fi
else
INCR=$tamanomarco
fi
TAMANOMARCO="$((imageX + INCR * 2))x$((imageY + INCR * 2))!"
echo "$IMAGEN -> $TIT - $COPY - $FONT - $TAMANO - $INCR - $TAMANOMARCO"
convert \( "$IMAGEN" -resize "$TAMANOMARCO"\
-fill black -colorize 60%\
-fill "#ffa200" -font "$FONT" -pointsize "$TAMANO"\
-draw "gravity southwest text 5,2 '$TIT'"\
-fill "#ffa200" -draw "gravity southeast text 5,2 '$COPY'" \)\
\( "$IMAGEN" -mattecolor "#ffa200" -frame 2x2+1+1 \) -gravity center \
-compose src-in -composite f-"$IMAGEN"
fi
;;
esac
shift
done
Hoy intenté probarlo con una foto panorámica y la verdad es que lo de -resize 104%x106% no le sienta nada bien. A mi me gusta que el marco sea igual de ancho por todos los lados independientemente del tamaño horizontal o vertical de la imagen.
Finalmente decidí añadir un parámetro más para pasarle el ancho del marco en pixels, y si no se pasa o se establece a valor nulo ("") que lo autocalcule.
Para autocalcularlo hago una división entera por 33 la mayor de las dos dimensiones de la imagen, lo cual viene a ser un 3% por cada lado. Y pongo un límite mínimo de 28 pixels. Vamos, que si el 3% del lado más largo es menor que 28 lo pongo a 28.
A todo esto ¿vas a hacer lo del curso de bash?
-i \"c b,a\""
sacará el símbolo de (CC) espacio grande, símbolo de BY espacio pequeño, símbolo de Share Alike ponmarco -t "Ada" -i "c,b,a" prueba-marco.jpg
#! /bin/bash
TIT="http://www.fotolibre.net"
COPY="$(date +%Y) Redy Rodriguez "
FONT="/usr/share/fonts/TTF/VeraBI.ttf"
CCFONT="/usr/share/fonts/ttf/decoratives/cc-icons.ttf"
ICONOS='c,b,a,'
TAMANO="20"
while [ ! -z "$1" ]; do
PARAM="$1"
case $PARAM in
"--help"|--usage|-h)
echo ""
echo "Uso:"
echo ""
echo " $0 --help|--usage|-h Muestra esta ayuda"
echo " $0 [opciones] img-1 [... img-n] [... [opciones] img-n1 [... img-nn]]"
echo ""
echo " opciones disponibles:"
echo ""
echo " --titulo|-t \"Título que aparece abajo a la izquierda\""
echo " --copyright|-c \"Mensaje de copyright que aparece a la derecha\""
echo " --font|-f Estilo de letra o fichero de fuente .ttf"
echo " --tamano|-s Tamaño de la letra en puntos"
echo " --tamanomarco|-g Ancho del marco en pixels"
echo " --iconos|-i Iconos previos al mensaje de copyright:"
echo " c=(CC), a=SA, b= BY, f=(=), n=NC, m=Sampling,"
echo " s=Share, p=PD r=Remix, C:Logo CC"
echo " para dejar un espacio pequeño entre símbolos"
echo " usar ',', para espacio mayor ' ', por ejemplo:"
echo " -i \"c b,a\""
echo ""
exit 0
;;
"--titulo"|"-t")
shift
TIT="$1"
;;
"--copyright"|"-c")
shift
COPY=$1
;;
"--iconos"|"-i")
shift
ICONOS=$1
;;
"--font"|"-f")
shift
FONT=$1
;;
"--tamano"|"-s")
shift
TAMANO=$1
;;
"--tamanomarco"|"-g")
shift
tamanomarco=$1
;;
*)
if [ -f "$PARAM" ]; then
IMAGEN="$PARAM"
imageSize="$(identify -format "%w %h" "$IMAGEN")"
imageX="${imageSize%% *}"
imageY="${imageSize##* }"
if [ -z $tamanomarco ]; then
if [ $imageX -gt $imageY ]; then MAXsize=imageX; else MAXsize=imageY; fi
INCR="$(( MAXsize / 32 ))"
if [ "$INCR" -lt 28 ]; then INCR=28; fi
else
INCR=$tamanomarco
fi
TAMANOMARCO="$((imageX + INCR * 2 ))x$((imageY + INCR * 2))!"
echo "$IMAGEN -> $TIT - $COPY - $FONT - $TAMANO - $INCR - $TAMANOMARCO"
convert \( "$IMAGEN" -resize "$TAMANOMARCO"\
-fill black -colorize 60%\
-fill "#ffa200" -font "$FONT" -pointsize "$TAMANO"\
-draw "gravity southwest text 5,2 '$TIT'" \
-gravity southeast \
\( -background none -fill "#ffa200" -pointsize "$(( TAMANO * 100 / 75 ))" \
-font "$CCFONT" label:"$ICONOS" \
-font "$FONT" -pointsize "$TAMANO" label:"$COPY" +append \) \
-composite \) \
\( "$IMAGEN" -mattecolor "#ffa200" -frame 2x2+1+1 \) -gravity center \
-compose src-in -composite f-"$IMAGEN"
fi
;;
esac
shift
done
Se me ha olvidado comentar que tienes una modelo en casa como para llenar la sección de retratos.
#! /bin/bash
TIT="http://www.fotolibre.net"
COPY="$(date +%Y) Pon tu nombre aquí "
FONT="/usr/share/fonts/TTF/VeraBI.ttf"
CCFONT="/usr/share/fonts/ttf/decoratives/cc-icons.ttf"
ICONOS='c,b,a,'
TAMANO="20"
macrotit()
{
local inicio resto1 resto result
if [ ! -z "$1" ]; then
inicio="${1%%\%*}"
resto1="${1:$(( ${#inicio} + 1 )):1}"
resto="${1:$(( ${#inicio} + 2 ))}"
case $resto1 in
F ) # Nombre del fichero
result="$(basename "$2")"
;;
f ) # Nombre del fichero sin extensión
result="$(basename "$2" ".${2##*.}")"
;;
d ) # Fecha de disparo, o si no existe del fichero
result="$(exiftool -d "%x %X" -DateTimeOriginal -S -s "$2")"
if [ -z result ]; then
result="$(date -r "$2" "+%x %X")"
fi
;;
D ) # Fecha del fichero
result="$(date -r "$2" "+%x %X")"
;;
s ) # Velocidad del obturador
result="$(exiftool -S -s -ShutterSpeed "$2")"
;;
a ) # Apertura del diafragma
result="$(exiftool -AFAperture -S -s "$2")"
;;
l ) # Longitud focal de la lente
result="$(exiftool -FocalLength -S -s "$2")"
;;
L ) # Longitud focal equivalente en 35mm (o si no se puede obtener, la real)
result="$(exiftool -FocalLengthIn35mmFormat -S -s "$2")"
if [ -z result ]; then
result="$(exiftool -FocalLength -S -s "$2")"
fi
;;
c ) # Comentario de usuario
result="$(exiftool -UserComment -S -s "$2")"
;;
C ) # Comentario de usuario, o si no existe, nombre del fichero
result="$(exiftool -UserComment -S -s "$2")"
if [ -z result ]; then
result="$(basename "$2")"
fi
;;
* )
result="$resto1"
;;
esac
echo -n "${inicio}${result}$(macrotit "${resto}" "$2")"
fi
}
while [ ! -z "$1" ]; do
PARAM="$1"
case $PARAM in
"--help"|--usage|-h)
echo ""
echo "Uso:"
echo ""
echo " $0 --help|--usage|-h Muestra esta ayuda"
echo " $0 [opciones] img-1 [... img-n] [... [opciones] img-n1 [... img-nn]]"
echo ""
echo " opciones disponibles:"
echo ""
echo " --titulo|-t \"Título que aparece abajo a la izquierda\""
echo " En el título se pueden usar las siguentes macros:"
echo " %F Nombre del fichero"
echo " %f Nombre del fichero sin extensión"
echo " %d Fecha de disparo, o si no existe del fichero"
echo " %D Fecha del fichero"
echo " %s Velocidad del obturador"
echo " %a Apertura del diafragma."
echo " %l Longitud focal de la lente."
echo " %L Longitud focal equivalente en 35mm "
echo " (o si no se puede obtener, la real)."
echo " %c Comentario de usuario."
echo " %C Comentario de usuario, o si no existe,"
echo " nombre del fichero."
echo " --copyright|-c \"Mensaje de copyright que aparece a la derecha\""
echo " --font|-f Estilo de letra o fichero de fuente .ttf"
echo " --tamano|-s Tamaño de la letra en puntos"
echo " --tamanomarco|-g Ancho del marco en pixels"
echo " --iconos|-i Iconos previos al mensaje de copyright:"
echo " c=(CC), a=SA, b= BY, f=(=), n=NC, m=Sampling,"
echo " s=Share, p=PD r=Remix, C:Logo CC"
echo " para dejar un espacio pequeño entre símbolos"
echo " usar ',', para espacio mayor ' ', por ejemplo:"
echo " -i \"c b,a\""
echo ""
exit 0
;;
"--titulo"|"-t")
shift
TIT="$1"
;;
"--copyright"|"-c")
shift
COPY=$1
;;
"--iconos"|"-i")
shift
ICONOS=$1
;;
"--font"|"-f")
shift
FONT=$1
;;
"--tamano"|"-s")
shift
TAMANO=$1
;;
"--tamanomarco"|"-g")
shift
tamanomarco=$1
;;
*)
if [ -f "$PARAM" ]; then
IMAGEN="$PARAM"
imageSize="$(identify -format "%w %h" "$IMAGEN")"
imageX="${imageSize%% *}"
imageY="${imageSize##* }"
if [ -z $tamanomarco ]; then
if [ $imageX -gt $imageY ]; then MAXsize=imageX; else MAXsize=imageY; fi
INCR="$(( MAXsize / 33 * 2 ))"
if [ "$INCR" -lt 28 ]; then INCR=28; fi
else
INCR=$tamanomarco
fi
TAMANOMARCO="$((imageX + INCR * 2 ))x$((imageY + INCR * 2))!"
echo "$IMAGEN -> $TIT - $COPY - $FONT - $TAMANO - $INCR - $TAMANOMARCO"
MTIT=$(macrotit "$TIT" "$IMAGEN")
convert \( "$IMAGEN" -resize "$TAMANOMARCO"\
-fill black -colorize 60%\
-fill "#ffa200" -font "$FONT" -pointsize "$TAMANO"\
-draw "gravity southwest text 5,2 '$MTIT'" \
-gravity southeast '-geometry +5+2' \
\( -background none -fill "#ffa200" -pointsize "$(( TAMANO * 100 / 75 ))" \
-font "$CCFONT" label:"$ICONOS" \
-font "$FONT" -pointsize "$TAMANO" label:"$COPY" +append \) \
-composite \) \
\( "$IMAGEN" -mattecolor "#ffa200" -frame 2x2+1+1 \) -gravity center \
-geometry +0+0 -compose src-in -composite f-"$IMAGEN"
fi
;;
esac
shift
done
Se me ha olvidado comentar que tienes una modelo en casa como para llenar la sección de retratos.Gracias, la foto no es muy afortunada, entraba demasiado sol por una ventana y el pelo y el brazo se churrascaron un poco, además hay un reflejo verde que debe ser culpa del sol, los personajes del fondo despistan un poco.... Pero ¿a que el marco le queda bien ;)?
for IMAGEN in $1*.jpg
do
echo $IMAGEN
mogrify -comment @$HOME/talleres/copyleft.txt $IMAGEN
done
El comentario puede ser útil cuando se escriba cortito.
Respecto a las experiencias con el script, noto que hay cosas que varían con el tamaño de las fotos.
Otro tema es que me parece que falta un text 5,2 para el texto del lado derecho que se pega mucho al borde.
¡Esto mejora cada día! :-)
#! /bin/bash
# Versión 1.1 (La casidefinitiva)
# Valores por defecto
TIT="http://www.fotolibre.net"
TIT1=""
TIT2=""
COPY="$(date +%Y) Pon Tu Nombre Aquí"
FONT="/usr/share/fonts/TTF/VeraBI.ttf"
FONT1="$FONT"
FONT2="$FONT"
CCFONT="/usr/share/fonts/ttf/decoratives/cc-icons.ttf"
ICONOS='c,b,a'
DTAMANO="" # Los tamaños de fuente calculan luego como 3/5 del ancho del Marco
DTAMANO1=""
DTAMANO2=""
POS="southwest"
POS1="northwest"
POS2="northeast"
POSCOPY="southeast"
# Array para traducir los valores numéricos 1-6 a las posiciones que
# hay que pasar a imagemagick con el parámetro gravity
POSICIONES=( "" northwest north northeast southwest south southeast )
macrotit() ## Resuelve las macros de los títulos
{
local inicio resto1 resto result
if [ ! -z "$1" ]; then
inicio="${1%%\%*}"
resto1="${1:$(( ${#inicio} + 1 )):1}"
resto="${1:$(( ${#inicio} + 2 ))}"
case $resto1 in
F ) # Nombre del fichero
result="$(basename "$2")"
;;
f ) # Nombre del fichero sin extensión
result="$(basename "$2" ".${2##*.}")"
;;
d ) # Fecha de disparo, o si no existe del fichero
result="$(exiftool -d "%x %X" -DateTimeOriginal -S -s "$2")"
if [ -z result ]; then
result="$(date -r "$2" "+%x %X")"
fi
;;
D ) # Fecha del fichero
result="$(date -r "$2" "+%x %X")"
;;
s ) # Velocidad del obturador
result="$(exiftool -S -s -ShutterSpeed "$2")"
;;
a ) # Apertura del diafragma
result="$(exiftool -AFAperture -S -s "$2")"
;;
l ) # Longitud focal de la lente
result="$(exiftool -FocalLength -S -s "$2")"
;;
L ) # Longitud focal equivalente en 35mm (o si no se puede obtener, la real)
result="$(exiftool -FocalLengthIn35mmFormat -S -s "$2")"
if [ -z result ]; then
result="$(exiftool -FocalLength -S -s "$2")"
fi
;;
c ) # Comentario de usuario
result="$(exiftool -UserComment -S -s "$2")"
;;
C ) # Comentario de usuario, o si no existe, nombre del fichero
result="$(exiftool -UserComment -S -s "$2")"
if [ -z result ]; then
result="$(basename "$2")"
fi
;;
* )
result="$resto1"
;;
esac
## Se podría hacer de otra forma pero preferí la recursividad
## La funcion resuelve el primer % y luego se llama a si misma con
## el resto hasta que el resto es la cadena vacía.
echo -n "${inicio}${result}$(macrotit "${resto}" "$2")"
fi
}
while [ ! -z "$1" ]; do
PARAM="$1"
case $PARAM in
"--help"|--usage|-h)
echo ""
echo "Uso:"
echo ""
echo " $0 --help|--usage|-h Muestra esta ayuda"
echo " $0 [opciones] img-1 [... img-n] [... [opciones] img-n1 [... img-nn]]"
echo ""
cat <<FINDETEXTO
opciones disponibles:
--tamanomarco|-g Ancho del marco en pixels.
--titulo|-t "Título de la foto"
--titulo1|-t1 "Puede haber hasta 3 títulos (t, t1 y t2)"
--titulo2|-t2 "t1 y t2 por defecto están en blanco"
En los título se pueden usar las siguentes macros:
%F Nombre del fichero
%f Nombre del fichero sin extensión
%d Fecha de disparo, o si no existe del fichero
%D Fecha del fichero
%s Velocidad del obturador
%a Apertura del diafragma.
%l Longitud focal de la lente.
%L Longitud focal equivalente en 35mm
(o si no se puede obtener, la real).
%c Comentario de usuario.
%C Comentario de usuario, o si no existe,
nombre del fichero.
--copyright|-c "Mensaje de copyright que aparece a la derecha"
--iconos|-i Iconos previos al mensaje de copyright:
c=(CC), a=SA, b= BY, f=(=), n=NC, m=Sampling,
s=Share, p=PD r=Remix, C:Logo CC
para dejar un espacio pequeño entre símbolos
usar ',', para espacio mayor ' ', por ejemplo:
-i "c b,a"
--font|-f Estilo de letra o fichero de fuente .ttf para título
y mensaje de copyright
--font1|-f1 Fuente para el título1 (por defecto la misma que título)
--font2|-f2 Fuente para el titulo2 (por defecto la misma que título)
--tamano|-s Tamaño de la letra en puntos para título y copyright
--tamano1|-t1 Tamaño de letra para título1 (por defecto = título)
--tamano2|-t2 Tamaño de letra para título2 (por defecto = título)
--ptitulo|-p Posición para título (Por defecto 4)
--ptitulo1|-p1 Posición para título1 (Por defecto 1)
--ptitulo2|-p2 Posición para título2 (Por defecto 3)
--pcopy|-q Posición para copyright (Por defecto 6)
Las posicioones posibles son:
1 - Arriba izquierda 4 - Abajo izquierda
2 - Arriba centrado 5 - Abajo centrado
3 - Arriba derecha 6 - Abajo derecha
FINDETEXTO
exit 0
;;
"--titulo"|"-t")
shift
TIT="$1"
;;
"--titulo1"|"-t1")
shift
TIT1="$1"
;;
"--titulo2"|"-t2")
shift
TIT2="$1"
;;
"--copyright"|"-c")
shift
COPY=$1
;;
"--iconos"|"-i")
shift
ICONOS=$1
;;
"--font"|"-f")
shift
FONT=$1
;;
"--font1"|"-f1")
shift
FONT1=$1
;;
"--font2"|"-f2")
shift
FONT2=$1
;;
"--tamano"|"-s")
shift
DTAMANO=$1
;;
"--tamano1"|"-s1")
shift
DTAMANO1=$1
;;
"--tamano2"|"-s2")
shift
DTAMANO2=$1
;;
"--tamanomarco"|"-g")
shift
tamanomarco=$1
;;
"--ptitulo"|"-p")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 6 ]; then
POS=${POSICIONES[$1]}
fi
;;
"--ptitulo1"|"-p1")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 6 ]; then
POS1=${POSICIONES[$1]}
fi
;;
"--ptitulo2"|"-p2")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 6 ]; then
POS2=${POSICIONES[$1]}
fi
;;
"--pcopy"|"-q")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 6 ]; then
POSCOPY=${POSICIONES[$1]}
fi
;;
"--pcopy"|"-q")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 6 ]; then
POSCOPY=${POSICIONES[$1]}
fi
;;
*)
if [ -f "$PARAM" ]; then
IMAGEN="$PARAM"
imageSize="$(identify -format "%w %h" "$IMAGEN")"
imageX="${imageSize%% *}"
imageY="${imageSize##* }"
if [ -z $tamanomarco ]; then
if [ $imageX -gt $imageY ]; then MAXsize=imageX; else MAXsize=imageY; fi
INCR="$(( MAXsize / 33 ))"
if [ "$INCR" -lt 36 ]; then INCR=36; fi
else
INCR=$tamanomarco
fi
TAMANOMARCO="$((imageX + INCR * 2 ))x$((imageY + INCR * 2))!"
if !(( DTAMANO >= 1 )); then
TAMANO="$(( INCR * 3 / 5 ))"
else
TAMANO="$DTAMANO"
fi
if !(( DTAMANO1 >= 1 )); then
TAMANO1="$(( INCR * 3 / 5 ))"
else
TAMANO1="$DTAMANO1"
fi
if !(( DTAMANO2 >= 1 )); then
TAMANO2="$(( INCR * 3 / 5 ))"
else
TAMANO2="$DTAMANO2"
fi
MTIT=$(macrotit "$TIT" "$IMAGEN")
MTIT1=$(macrotit "$TIT1" "$IMAGEN")
MTIT2=$(macrotit "$TIT2" "$IMAGEN")
# echo "$IMAGEN -> $MTIT - $MTIT1 -$MTIT2 - $COPY - $FONT - $TAMANO - $INCR - $TAMANOMARCO"
echo "Poniendo marco a -> $IMAGEN"
convert \( "$IMAGEN" -resize "$TAMANOMARCO"\
-fill black -colorize 60%\
-fill "#ffa200" -font "$FONT" -pointsize "$TAMANO"\
-draw "gravity "$POS" text 5,2 '$MTIT'" \
-fill "#ffa200" -font "$FONT1" -pointsize "$TAMANO1"\
-draw "gravity "$POS1" text 5,2 '$MTIT1'" \
-fill "#ffa200" -font "$FONT2" -pointsize "$TAMANO2"\
-draw "gravity "$POS2" text 5,2 '$MTIT2'" \
\( -background none -fill "#ffa200" -pointsize "$(( TAMANO * 100 / 75 ))" \
-font "$CCFONT" label:"$ICONOS" \
-font "$FONT" -pointsize "$TAMANO" label:"$COPY" +append \) \
-gravity "$POSCOPY" -geometry +5+2 -composite \) \
\( "$IMAGEN" -mattecolor "#ffa200" -frame 2x2+1+1 \) -gravity center \
-geometry +0+0 -compose src-in -composite f-"$IMAGEN"
else
echo "$1 : parámetro o nombre de fichero incorrecto. Use -h para ayuda"
fi
;;
esac
shift
done
Código: [Seleccionar]while [ ! -z "$1" ]; do
while [ $# -gt 0 ]; do
#! /bin/bash
# Versión 1.2 (La casiredefinitiva)
# Valores por defecto
TIT="http://www.fotolibre.net"
TIT1=""
TIT2=""
COPY="$(date +%Y) Redy Rodriguez"
FONT="/usr/share/fonts/TTF/VeraBI.ttf"
FONT1="$FONT"
FONT2="$FONT"
CCFONT="/usr/share/fonts/ttf/decoratives/cc-icons.ttf"
ICONOS='c,b,a'
DTAMANO="" # Los tamaños de fuente calculan luego como 3/5 del ancho del Marco
DTAMANO1=""
DTAMANO2=""
POS="southwest"
POS1="northwest"
POS2="northeast"
POSCOPY="southeast"
# Array para traducir los valores numéricos 1-6 a las posiciones que
# hay que pasar a imagemagick con el parámetro gravity
POSICIONES=( "" northwest north northeast southwest south southeast )
macrotit() ## Resuelve las macros de los títulos
{
local inicio resto1 resto result
if [ ! -z "$1" ]; then
inicio="${1%%\%*}"
resto1="${1:$(( ${#inicio} + 1 )):1}"
resto="${1:$(( ${#inicio} + 2 ))}"
case $resto1 in
F ) # Nombre del fichero
result="$(basename "$2")"
;;
f ) # Nombre del fichero sin extensión
result="$(basename "$2" ".${2##*.}")"
;;
d ) # Fecha de disparo, o si no existe del fichero
result="$(exiftool -d "%x %X" -DateTimeOriginal -S -s "$2")"
if [ -z "$result" ]; then
result="$(date -r "$2" "+%x %X")"
fi
;;
D ) # Fecha del fichero
result="$(date -r "$2" "+%x %X")"
;;
s ) # Velocidad del obturador
result="$(exiftool -S -s -ShutterSpeed "$2")"
;;
a ) # Apertura del diafragma
result="$(exiftool -Aperture -S -s "$2")"
;;
l ) # Longitud focal de la lente
result="$(exiftool -FocalLength -S -s "$2")"
;;
L ) # Longitud focal equivalente en 35mm (o si no se puede obtener, la real)
result="$(exiftool -FocalLengthIn35mmFormat -S -s "$2")"
if [ -z "$result" ]; then
result="$(exiftool -FocalLength -S -s "$2")"
fi
;;
c ) # Comentario de usuario
result="$(exiftool -UserComment -S -s "$2")"
;;
C ) # Comentario de usuario, o si no existe, nombre del fichero
result="$(exiftool -UserComment -S -s "$2")"
if [ -z "$result" ]; then
result="$(basename "$2")"
fi
;;
* )
result="$resto1"
;;
esac
## Se podría hacer de otra forma pero preferí la recursividad
## La funcion resuelve el primer % y luego se llama a si misma con
## el resto hasta que el resto es la cadena vacía.
echo -n "${inicio}${result}$(macrotit "${resto}" "$2")"
fi
}
while [ $# -gt 0 ]; do
PARAM="$1"
case $PARAM in
"--help"|--usage|-h)
echo ""
echo "Uso:"
echo ""
echo " $0 --help|--usage|-h Muestra esta ayuda"
echo " $0 [opciones] img-1 [... img-n] [... [opciones] img-n1 [... img-nn]]"
echo ""
cat <<FINDETEXTO
opciones disponibles:
--tamanomarco|-g Ancho del marco en pixels.
--titulo|-t "Título de la foto"
--titulo1|-t1 "Puede haber hasta 3 títulos (t, t1 y t2)"
--titulo2|-t2 "t1 y t2 por defecto están en blanco"
En los título se pueden usar las siguentes macros:
%F Nombre del fichero
%f Nombre del fichero sin extensión
%d Fecha de disparo, o si no existe del fichero
%D Fecha del fichero
%s Velocidad del obturador
%a Apertura del diafragma.
%l Longitud focal de la lente.
%L Longitud focal equivalente en 35mm
(o si no se puede obtener, la real).
%c Comentario de usuario.
%C Comentario de usuario, o si no existe,
nombre del fichero.
--copyright|-c "Mensaje de copyright que aparece a la derecha"
--iconos|-i Iconos previos al mensaje de copyright:
c=(CC), a=SA, b= BY, f=(=), n=NC, m=Sampling,
s=Share, p=PD r=Remix, C:Logo CC
para dejar un espacio pequeño entre símbolos
usar ',', para espacio mayor ' ', por ejemplo:
-i "c b,a"
--font|-f Estilo de letra o fichero de fuente .ttf para título
y mensaje de copyright
--font1|-f1 Fuente para el título1 (por defecto la misma que título)
--font2|-f2 Fuente para el titulo2 (por defecto la misma que título)
--tamano|-s Tamaño de la letra en puntos para título y copyright
--tamano1|-t1 Tamaño de letra para título1 (por defecto = título)
--tamano2|-t2 Tamaño de letra para título2 (por defecto = título)
--ptitulo|-p Posición para título (Por defecto 4)
--ptitulo1|-p1 Posición para título1 (Por defecto 1)
--ptitulo2|-p2 Posición para título2 (Por defecto 3)
--pcopy|-q Posición para copyright (Por defecto 6)
Las posicioones posibles son:
1 - Arriba izquierda 4 - Abajo izquierda
2 - Arriba centrado 5 - Abajo centrado
3 - Arriba derecha 6 - Abajo derecha
FINDETEXTO
exit 0
;;
"--titulo"|"-t")
shift
TIT="$1"
;;
"--titulo1"|"-t1")
shift
TIT1="$1"
;;
"--titulo2"|"-t2")
shift
TIT2="$1"
;;
"--copyright"|"-c")
shift
COPY=$1
;;
"--iconos"|"-i")
shift
ICONOS=$1
;;
"--font"|"-f")
shift
FONT=$1
;;
"--font1"|"-f1")
shift
FONT1=$1
;;
"--font2"|"-f2")
shift
FONT2=$1
;;
"--tamano"|"-s")
shift
DTAMANO=$1
;;
"--tamano1"|"-s1")
shift
DTAMANO1=$1
;;
"--tamano2"|"-s2")
shift
DTAMANO2=$1
;;
"--tamanomarco"|"-g")
shift
tamanomarco=$1
;;
"--ptitulo"|"-p")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 6 ]; then
POS=${POSICIONES[$1]}
fi
;;
"--ptitulo1"|"-p1")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 6 ]; then
POS1=${POSICIONES[$1]}
fi
;;
"--ptitulo2"|"-p2")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 6 ]; then
POS2=${POSICIONES[$1]}
fi
;;
"--pcopy"|"-q")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 6 ]; then
POSCOPY=${POSICIONES[$1]}
fi
;;
"--pcopy"|"-q")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 6 ]; then
POSCOPY=${POSICIONES[$1]}
fi
;;
*)
if [ -f "$PARAM" ]; then
IMAGEN="$PARAM"
OUT="$(dirname "$PARAM")/f-$(basename "$PARAM")"
imageSize="$(identify -format "%w %h" "$IMAGEN")"
imageX="${imageSize%% *}"
imageY="${imageSize##* }"
if [ -z "$tamanomarco" ]; then
if [ $imageX -gt $imageY ]; then MAXsize=imageX; else MAXsize=imageY; fi
INCR="$(( MAXsize / 33 ))"
if [ "$INCR" -lt 36 ]; then INCR=36; fi
else
INCR=$tamanomarco
fi
TAMANOMARCO="$((imageX + INCR * 2 ))x$((imageY + INCR * 2))!"
if !(( DTAMANO >= 1 )); then
TAMANO="$(( INCR * 3 / 5 ))"
else
TAMANO="$DTAMANO"
fi
if !(( DTAMANO1 >= 1 )); then
TAMANO1="$(( INCR * 3 / 5 ))"
else
TAMANO1="$DTAMANO1"
fi
if !(( DTAMANO2 >= 1 )); then
TAMANO2="$(( INCR * 3 / 5 ))"
else
TAMANO2="$DTAMANO2"
fi
MTIT=$(macrotit "$TIT" "$IMAGEN")
MTIT1=$(macrotit "$TIT1" "$IMAGEN")
MTIT2=$(macrotit "$TIT2" "$IMAGEN")
# echo "$IMAGEN -> $MTIT - $MTIT1 -$MTIT2 - $COPY - $FONT - $TAMANO - $INCR - $TAMANOMARCO"
echo "Poniendo marco a -> $IMAGEN"
convert \( "$IMAGEN" -resize "$TAMANOMARCO"\
-fill black -colorize 60%\
-fill "#ffa200" -font "$FONT" -pointsize "$TAMANO"\
-draw "gravity "$POS" text 5,2 '$MTIT'" \
-fill "#ffa200" -font "$FONT1" -pointsize "$TAMANO1"\
-draw "gravity "$POS1" text 5,2 '$MTIT1'" \
-fill "#ffa200" -font "$FONT2" -pointsize "$TAMANO2"\
-draw "gravity "$POS2" text 5,2 '$MTIT2'" \
\( -background none -fill "#ffa200" -pointsize "$(( TAMANO * 100 / 75 ))" \
-font "$CCFONT" label:"$ICONOS" \
-font "$FONT" -pointsize "$TAMANO" label:"$COPY" +append \) \
-gravity "$POSCOPY" -geometry +5+2 -composite \) \
\( "$IMAGEN" -mattecolor "#ffa200" -frame 2x2+1+1 \) -gravity center \
-geometry +0+0 -compose src-in -composite "$OUT"
else
echo "$1 : parámetro o nombre de fichero incorrecto. Use -h para ayuda"
fi
;;
esac
shift
done
ponmarco2 -t1 "Ada en el columpio" -t2 "s:%s f:%a l:%L %d" -s2 11 ada-columpio.jpg
#!/bin/bash
#
# Pone un marco con sombra a las imágenes que le digamos
#
# Basado en el script dropsh de Jesús J. Del Carpio
# http://www.isgeek.net/files/dropsh
#
#
# Valores por defecto
TIT1="http://www.fotolibre.net"
TIT2="%d"
COPY="$(date +%Y) Redy Rodriguez"
FONT1="/usr/share/fonts/TTF/VeraBI.ttf"
FONT2="$FONT1"
FONT="$FONT1"
CCFONT="/usr/share/fonts/ttf/decoratives/cc-icons.ttf"
ICONOS='c,b,a'
ANCHO=""
DTAMANO1="" # Los tamaños de fuente calculan luego como 3/5 del ancho
DTAMANO2=""
DTAMANO3=""
DMARCO="" # Tamaño del marco por defecto
POS1="south"
POS2="southwest"
POSCOPY="southeast"
PREFIJO="s_"
_SOMBRA="8"
_BORDE="20"
COLOR="white"
TINTA="#101010"
# Array para traducir los valores numéricos 1-6 a las posiciones que
# hay que pasar a imagemagick con el parámetro gravity
POSICIONES=( "" southwest south southeast )
macrotit() ## Resuelve las macros de los títulos
{
local inicio resto1 resto result
if [ ! -z "$1" ]; then
inicio="${1%%\%*}"
resto1="${1:$(( ${#inicio} + 1 )):1}"
resto="${1:$(( ${#inicio} + 2 ))}"
case $resto1 in
F ) # Nombre del fichero
result="$(basename "$2")"
;;
f ) # Nombre del fichero sin extensión
result="$(basename "$2" ".${2##*.}")"
;;
d ) # Fecha de disparo, o si no existe del fichero
result="$(exiftool -d "%x %X" -DateTimeOriginal -S -s "$2")"
if [ -z "$result" ]; then
result="$(date -r "$2" "+%x %X")"
fi
;;
D ) # Fecha del fichero
result="$(date -r "$2" "+%x %X")"
;;
s ) # Velocidad del obturador
result="$(exiftool -S -s -ShutterSpeed "$2")"
;;
a ) # Apertura del diafragma
result="$(exiftool -Aperture -S -s "$2")"
;;
l ) # Longitud focal de la lente
result="$(exiftool -FocalLength -S -s "$2")"
;;
L ) # Longitud focal equivalente en 35mm (o si no se puede obtener, la real)
result="$(exiftool -FocalLengthIn35mmFormat -S -s "$2")"
if [ -z "$result" ]; then
result="$(exiftool -FocalLength -S -s "$2")"
fi
;;
c ) # Comentario de usuario
result="$(exiftool -UserComment -S -s "$2")"
;;
C ) # Comentario de usuario, o si no existe, nombre del fichero
result="$(exiftool -UserComment -S -s "$2")"
if [ -z "$result" ]; then
result="$(basename "$2")"
fi
;;
* )
result="$resto1"
;;
esac
## Se podría hacer de otra forma pero preferí la recursividad
## La funcion resuelve el primer % y luego se llama a si misma con
## el resto hasta que el resto es la cadena vacía.
echo -n "${inicio}${result}$(macrotit "${resto}" "$2")"
fi
}
while [ $# -gt 0 ]; do
PARAM="$1"
case "$PARAM" in
"--help"|--usage|-h)
echo ""
echo "Uso:"
echo ""
echo " $0 --help|--usage|-h Muestra esta ayuda"
echo " $0 [opciones] img-1 [... img-n] [... [opciones] img-n1 [... img-nn]]"
echo ""
cat <<FINDETEXTO
opciones disponibles:
--tamanomarco|-g Ancho del marco en pixels.
--titulo1|-t1 "Puede haber hasta 2 títulos (t1 y t2)"
--titulo2|-t2 "t2 por defecto es la fecha de disparo"
En los título se pueden usar las siguentes macros:
%F Nombre del fichero
%f Nombre del fichero sin extensión
%d Fecha de disparo, o si no existe del fichero
%D Fecha del fichero
%s Velocidad del obturador
%a Apertura del diafragma.
%l Longitud focal de la lente.
%L Longitud focal equivalente en 35mm
(o si no se puede obtener, la real).
%c Comentario de usuario.
%C Comentario de usuario, o si no existe,
nombre del fichero.
--copyright|-m "Mensaje de copyright que aparece a la derecha"
--iconos|-i Iconos previos al mensaje de copyright:
c=(CC), a=SA, b= BY, f=(=), n=NC, m=Sampling,
s=Share, p=PD r=Remix, C:Logo CC
para dejar un espacio pequeño entre símbolos
usar ',', para espacio mayor ' ', por ejemplo:
-i "c b,a"
--font3|-f Estilo de letra o fichero de fuente .ttf para mensaje
de copyright
--font1|-f1 Fuente para el título1
--font2|-f2 Fuente para el titulo2 (por defecto la misma que título1)
--tamano|-s Tamaño de la letra en puntos para copyright
--tamano1|-s1 Tamaño de letra para título1 (por defecto = título)
--tamano2|-s2 Tamaño de letra para título2 (por defecto = título)
--ptitulo1|-p1 Posición para título1 (Por defecto 2)
--ptitulo2|-p2 Posición para título2 (Por defecto 1)
--pcopy|-q Posición para copyright (Por defecto 3)
Las posicioones posibles son:
1 - izquierda
2 - centrado
3 - derecha
--borde|-b Tamaño del borde
--sombra|-h Tamaño de la sombra
--color|-c Color del borde
--tinta|-i Color del texto
FINDETEXTO
exit 0
;;
"--titulo"|"-t")
shift
TIT="$1"
;;
"--titulo1"|"-t1")
shift
TIT1="$1"
;;
"--titulo2"|"-t2")
shift
TIT2="$1"
;;
"--copyright"|"-m")
shift
COPY=$1
;;
"--iconos"|"-i")
shift
ICONOS=$1
;;
"--font"|"-f")
shift
FONT=$1
;;
"--font1"|"-f1")
shift
FONT1=$1
;;
"--font2"|"-f2")
shift
FONT2=$1
;;
"--tamano"|"-s")
shift
DTAMANO=$1
;;
"--tamano1"|"-s1")
shift
DTAMANO1=$1
;;
"--tamano2"|"-s2")
shift
DTAMANO2=$1
;;
"--borde"|"-b")
shift
DBORDE=$1
;;
"--sombra"|"-h")
shift
DSOMBRA=$1
;;
"--tinta"|"-i")
shift
TINTA=$1
;;
"--color"|"-c")
shift
COLOR=$1
;;
"--ptitulo1"|"-p1")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 3 ]; then
POS1=${POSICIONES[$1]}
fi
;;
"--ptitulo2"|"-p2")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 3 ]; then
POS2=${POSICIONES[$1]}
fi
;;
"--pcopy"|"-q")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 3 ]; then
POSCOPY=${POSICIONES[$1]}
fi
;;
"--tamanomarco"|"-g")
shift
DMARCO=$1
;;
*)
if [ -f "$PARAM" ]; then
IN="$PARAM"
OUT="$(dirname "$PARAM")/${PREFIJO}$(basename "$PARAM")"
imageSize="$(identify -format "%w %h" "$IN")"
imageX="${imageSize%% *}"
imageY="${imageSize##* }"
if [ $imageX -gt $imageY ]; then MAXsize=imageX; else MAXsize=imageY; fi
if !(( DMARCO >= 1 )); then
MARCO="$(( MAXsize/25+1 ))"
else
MARCO="$DMARCO"
fi
if (( DBORDE >= 1 )); then
BORDE=$DBORDE
else
BORDE=$_BORDE
fi
if (( DSOMBRA >= 1 )); then
SOMBRA=$DSOMBRA
else
SOMBRA=$_SOMBRA
fi
if (( DTAMANO >= 1 )); then
TAMANO=$DTAMANO
else
TAMANO="$((MARCO/3+1))"
fi
if (( DTAMANO1 >= 1 )); then
TAMANO1=$DTAMANO1
else
TAMANO1="$((MARCO/2+1))"
fi
if (( DTAMANO2 >= 1 )); then
TAMANO2=$DTAMANO2
else
TAMANO2="$((MARCO/3+1))"
fi
MTIT1=$(macrotit "$TIT1" "$IN")
MTIT2=$(macrotit "$TIT2" "$IN")
echo "Poniendo marco a $IN -> $OUT"
convert \
"$IN" -modulate 80 +contrast +contrast +contrast\
-colorspace gray \
-channel RGBA \
-bordercolor "$COLOR" \
-border "$(( SOMBRA*2 ))x$(( SOMBRA*2 ))" \
-blur "0x$((SOMBRA/5+5))" \
-shave "${SOMBRA}x${SOMBRA}" \
-gravity northwest \
"$IN" -colorspace RGB -compose src-in -composite \
-bordercolor white -border "${BORDE}x${BORDE}" \
-gravity southeast \
-crop "+$(( SOMBRA*2 ))+$(( SOMBRA*2 ))" \
-size 1x$MARCO xc:"$COLOR" -append \
\( -background "$COLOR" -size 0x0 -fill "$TINTA" -pointsize \
"$(( TAMANO * 100 / 75 ))" \
-font "$CCFONT" label:"$ICONOS" \
-font "$FONT" -pointsize "$TAMANO" \
label:"$COPY" +append \) \
-gravity "$POSCOPY" -geometry +$(( BORDE * (${#POSCOPY}!=5) ))+5 \
-composite -compose src-in \
-fill "$TINTA" -font "$FONT1" -pointsize "$TAMANO1" \
-draw "gravity $POS1 text $(( BORDE * (${#POS1}!=5) )),5 '$MTIT1'" \
-fill "$TINTA" -font "$FONT2" -pointsize "$TAMANO2"\
-draw "gravity $POS2 text $(( BORDE * (${#POS2}!=5) )),5 '$MTIT2'" \
"$OUT"
else
echo "$1 : parámetro o nombre de fichero incorrecto. Use -h para ayuda"
fi
;;
esac
shift
done
Uso:
./ponmarco2 --help|--usage|-h Muestra esta ayuda
./ponmarco2 [opciones] img-1 [... img-n] [... [opciones] img-n1 [... img-nn]]
opciones disponibles:
--tamanomarco|-g Ancho del marco en pixels.
--titulo1|-t1 "Puede haber hasta 2 títulos (t1 y t2)"
--titulo2|-t2 "t2 por defecto es la fecha de disparo"
En los título se pueden usar las siguentes macros:
%F Nombre del fichero
%f Nombre del fichero sin extensión
%d Fecha de disparo, o si no existe del fichero
%D Fecha del fichero
%s Velocidad del obturador
%a Apertura del diafragma.
%l Longitud focal de la lente.
%L Longitud focal equivalente en 35mm
(o si no se puede obtener, la real).
%c Comentario de usuario.
%C Comentario de usuario, o si no existe,
nombre del fichero.
--copyright|-m "Mensaje de copyright que aparece a la derecha"
--iconos|-i Iconos previos al mensaje de copyright:
c=(CC), a=SA, b= BY, f=(=), n=NC, m=Sampling,
s=Share, p=PD r=Remix, C:Logo CC
para dejar un espacio pequeño entre símbolos
usar ',', para espacio mayor ' ', por ejemplo:
-i "c b,a"
--font|-f Estilo de letra o fichero de fuente .ttf para mensaje
de copyright
--font1|-f1 Fuente para el título1
--font2|-f2 Fuente para el titulo2 (por defecto la misma que título1)
--tamano|-s Tamaño de la letra en puntos para copyright
--tamano1|-s1 Tamaño de letra para título1 (por defecto = título)
--tamano2|-s2 Tamaño de letra para título2 (por defecto = título)
--ptitulo1|-p1 Posición para título1 (Por defecto 2)
--ptitulo2|-p2 Posición para título2 (Por defecto 1)
--pcopy|-q Posición para copyright (Por defecto 3)
Las posicioones posibles son:
1 - izquierda
2 - centrado
3 - derecha
--borde|-b Tamaño del borde
--sombra|-h Tamaño de la sombra
--color|-c Color del borde
--tinta|-i Color del texto
Por cierto, muy buen retrato; al final estamos asistiendo (virtualmente) al crecimiento de tu hija. @)
A=( 1 2 3 4 5 ); echo ${A[@]}
eval POSICIONES{[1]=southwest,[2]=south,[3]=southeast}
he visto que si la foto es grande, el texto mal posicionado
por cierto, Redy, ahora que los scripts ya parecen estables.
por cierto, Redy, ahora que los scripts ya parecen estables.
Pues ahora que lo dices acabo de recordar que tenía pendiente arreglar el segundo que no sitúa bien los textos... A ver si tengo un rato y me pongo, y luego además los separo y los publico en mi página...
Pues ahora que lo dices acabo de recordar que tenía pendiente arreglar el segundo que no sitúa bien los textos...
#!/bin/bash
#
# Pone un marco con sombra a las imágenes que le digamos
#
# Basado en el script dropsh de Jesús J. Del Carpio
# http://www.isgeek.net/files/dropsh
#
#
# Valores por defecto
TIT1="http://www.fotolibre.net"
TIT2="%d"
COPY="$(date +%Y) Redy Rodriguez"
FONT1="/usr/share/fonts/TTF/VeraBI.ttf"
FONT2="$FONT1"
FONT="$FONT1"
CCFONT="/usr/share/fonts/ttf/decoratives/cc-icons.ttf"
ICONOS='c,b,a'
ANCHO=""
DTAMANO1="" # Los tamaños de fuente calculan luego como 3/5 del ancho
DTAMANO2=""
DTAMANO3=""
DMARCO="" # Tamaño del marco por defecto
POS1="center"
POS2="west"
POSCOPY="southeast"
PREFIJO="s_"
_SOMBRA="8"
_BORDE="20"
COLOR="ORANGE"
TINTA="#101010"
# Array para traducir los valores numéricos 1-6 a las posiciones que
# hay que pasar a imagemagick con el parámetro gravity
POSICIONESC=( "" southwest south southeast )
POSICIONES=( "" west center east)
macrotit() ## Resuelve las macros de los títulos
{
local inicio resto1 resto result
if [ ! -z "$1" ]; then
inicio="${1%%\%*}"
resto1="${1:$(( ${#inicio} + 1 )):1}"
resto="${1:$(( ${#inicio} + 2 ))}"
case $resto1 in
F ) # Nombre del fichero
result="$(basename "$2")"
;;
f ) # Nombre del fichero sin extensión
result="$(basename "$2" ".${2##*.}")"
;;
d ) # Fecha de disparo, o si no existe del fichero
result="$(exiftool -d "%x %X" -DateTimeOriginal -S -s "$2")"
if [ -z "$result" ]; then
result="$(date -r "$2" "+%x %X")"
fi
;;
D ) # Fecha del fichero
result="$(date -r "$2" "+%x %X")"
;;
s ) # Velocidad del obturador
result="$(exiftool -S -s -ShutterSpeed "$2")"
;;
a ) # Apertura del diafragma
result="$(exiftool -Aperture -S -s "$2")"
;;
l ) # Longitud focal de la lente
result="$(exiftool -FocalLength -S -s "$2")"
;;
L ) # Longitud focal equivalente en 35mm (o si no se puede obtener, la real)
result="$(exiftool -FocalLengthIn35mmFormat -S -s "$2")"
if [ -z "$result" ]; then
result="$(exiftool -FocalLength -S -s "$2")"
fi
;;
c ) # Comentario de usuario
result="$(exiftool -UserComment -S -s "$2")"
;;
C ) # Comentario de usuario, o si no existe, nombre del fichero
result="$(exiftool -UserComment -S -s "$2")"
if [ -z "$result" ]; then
result="$(basename "$2")"
fi
;;
* )
result="$resto1"
;;
esac
## Se podría hacer de otra forma pero preferí la recursividad
## La funcion resuelve el primer % y luego se llama a si misma con
## el resto hasta que el resto es la cadena vacía.
echo -n "${inicio}${result}$(macrotit "${resto}" "$2")"
fi
}
while [ $# -gt 0 ]; do
PARAM="$1"
case "$PARAM" in
"--help"|--usage|-h)
echo ""
echo "Uso:"
echo ""
echo " $0 --help|--usage|-h Muestra esta ayuda"
echo " $0 [opciones] img-1 [... img-n] [... [opciones] img-n1 [... img-nn]]"
echo ""
cat <<FINDETEXTO
opciones disponibles:
--tamanomarco|-g Ancho del marco en pixels.
--titulo1|-t1 "Puede haber hasta 2 títulos (t1 y t2)"
--titulo2|-t2 "t2 por defecto es la fecha de disparo"
En los título se pueden usar las siguentes macros:
%F Nombre del fichero
%f Nombre del fichero sin extensión
%d Fecha de disparo, o si no existe del fichero
%D Fecha del fichero
%s Velocidad del obturador
%a Apertura del diafragma.
%l Longitud focal de la lente.
%L Longitud focal equivalente en 35mm
(o si no se puede obtener, la real).
%c Comentario de usuario.
%C Comentario de usuario, o si no existe,
nombre del fichero.
--copyright|-m "Mensaje de copyright que aparece a la derecha"
--iconos|-i Iconos previos al mensaje de copyright:
c=(CC), a=SA, b= BY, f=(=), n=NC, m=Sampling,
s=Share, p=PD r=Remix, C:Logo CC
para dejar un espacio pequeño entre símbolos
usar ',', para espacio mayor ' ', por ejemplo:
-i "c b,a"
--font3|-f Estilo de letra o fichero de fuente .ttf para mensaje
de copyright
--font1|-f1 Fuente para el título1
--font2|-f2 Fuente para el titulo2 (por defecto la misma que título1)
--tamano|-s Tamaño de la letra en puntos para copyright
--tamano1|-s1 Tamaño de letra para título1 (por defecto = título)
--tamano2|-s2 Tamaño de letra para título2 (por defecto = título)
--ptitulo1|-p1 Posición para título1 (Por defecto 2)
--ptitulo2|-p2 Posición para título2 (Por defecto 1)
--pcopy|-q Posición para copyright (Por defecto 3)
Las posicioones posibles son:
1 - izquierda
2 - centrado
3 - derecha
--borde|-b Tamaño del borde
--sombra|-h Tamaño de la sombra
--color|-c Color del borde
--tinta|-i Color del texto
FINDETEXTO
exit 0
;;
"--titulo"|"-t")
shift
TIT="$1"
;;
"--titulo1"|"-t1")
shift
TIT1="$1"
;;
"--titulo2"|"-t2")
shift
TIT2="$1"
;;
"--copyright"|"-m")
shift
COPY=$1
;;
"--iconos"|"-i")
shift
ICONOS=$1
;;
"--font"|"-f")
shift
FONT=$1
;;
"--font1"|"-f1")
shift
FONT1=$1
;;
"--font2"|"-f2")
shift
FONT2=$1
;;
"--tamano"|"-s")
shift
DTAMANO=$1
;;
"--tamano1"|"-s1")
shift
DTAMANO1=$1
;;
"--tamano2"|"-s2")
shift
DTAMANO2=$1
;;
"--borde"|"-b")
shift
DBORDE=$1
;;
"--sombra"|"-h")
shift
DSOMBRA=$1
;;
"--tinta"|"-i")
shift
TINTA=$1
;;
"--color"|"-c")
shift
COLOR=$1
;;
"--ptitulo1"|"-p1")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 3 ]; then
POS1=${POSICIONES[$1]}
fi
;;
"--ptitulo2"|"-p2")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 3 ]; then
POS2=${POSICIONES[$1]}
fi
;;
"--pcopy"|"-q")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 3 ]; then
POSCOPY=${POSICIONESC[$1]}
fi
;;
"--tamanomarco"|"-g")
shift
DMARCO=$1
;;
*)
if [ -f "$PARAM" ]; then
IN="$PARAM"
OUT="$(dirname "$PARAM")/${PREFIJO}$(basename "$PARAM")"
imageSize="$(identify -format "%w %h" "$IN")"
imageX="${imageSize%% *}"
imageY="${imageSize##* }"
if [ $imageX -gt $imageY ]; then MAXsize=imageX; else MAXsize=imageY; fi
if !(( DMARCO >= 1 )); then
MARCO="$(( MAXsize/25+1 ))"
else
MARCO="$DMARCO"
fi
if (( DBORDE >= 1 )); then
BORDE=$DBORDE
else
BORDE=$_BORDE
fi
if (( DSOMBRA >= 1 )); then
SOMBRA=$DSOMBRA
else
SOMBRA=$_SOMBRA
fi
if (( DTAMANO >= 1 )); then
TAMANO=$DTAMANO
else
TAMANO="$((MARCO/3+1))"
fi
if (( DTAMANO1 >= 1 )); then
TAMANO1=$DTAMANO1
else
TAMANO1="$((MARCO/2+1))"
fi
if (( DTAMANO2 >= 1 )); then
TAMANO2=$DTAMANO2
else
TAMANO2="$((MARCO/3+1))"
fi
MTIT1=$(macrotit "$TIT1" "$IN")
MTIT2=$(macrotit "$TIT2" "$IN")
echo "Poniendo marco a $IN -> $OUT"
convert \
\( "$IN" -modulate 80 +contrast +contrast +contrast\
-colorspace gray \
-channel RGBA \
-bordercolor "$COLOR" \
-border "$(( SOMBRA*2 ))x$(( SOMBRA*2 ))" \
-blur "0x$((SOMBRA/5+5))" \
-shave "${SOMBRA}x${SOMBRA}" \
-gravity northwest \
"$IN" -colorspace RGB -compose src-in -composite \
-bordercolor "$COLOR" -border "${BORDE}x${BORDE}" \
-gravity southeast \
-crop "+$(( SOMBRA*2 ))+$(( SOMBRA*2 ))" \
\( -background "$COLOR" -size "$((imageX+2*BORDE))"x"$MARCO" xc:"$COLOR" \
-fill "$TINTA" \
-gravity "$POS1" -font "$FONT1" -pointsize "$TAMANO1" -draw "text $((BORDE * ( ${#POS1}!=6) )),0 '$MTIT1'" \
-gravity "$POS2" -font "$FONT2" -pointsize "$TAMANO2" -draw "text $((BORDE * ( ${#POS2}!=6) )),0 '$MTIT2'" \) \
-append \
\( -background "$COLOR" -size 0x0 -fill "$TINTA" -pointsize \
"$(( TAMANO * 100 / 75 ))" \
-font "$CCFONT" label:"$ICONOS" \
-font "$FONT" -pointsize "$TAMANO" \
label:"$COPY" +append \) \
-gravity "$POSCOPY" -geometry +$((BORDE * ( ${#POSCOPY}!=5) ))+"$TAMANO" \) \
-composite -compose src-in \
"$OUT"
else
echo "$1 : parámetro o nombre de fichero incorrecto. Use -h para ayuda"
fi
;;
esac
shift
done
[colegota@localhost ~]$ /home/colegota/talleres/poner_marco_2008-13 -g 28 -t "David, verano del 2008" da*
Código: [Seleccionar][colegota@localhost ~]$ /home/colegota/talleres/poner_marco_2008-13 -g 28 -t "David, verano del 2008" da*
Como lo suelo hacer con cierta frecuencia lo tengo "a tiro de flecha" en el terminal (vamos que le doy a la flcha arriba para que me salgan las últimas órdenes, siempre tengo un terminal abierto en cada escritorio). Pero bueno, que si lo quieres hacer elegante, añade el path de tus propios ejecutables a $PATH y no tienes que andar moviendo a /bin que es de root.
Todas las distribuciones que conozco meten ~/bin en el path por defecto,...
desde que he cambiado al conejo cornudo (Ubuntu Jaunty) que el script me construye el marco, pero me deja la foto en B&N.
Hola redy,
desde que he cambiado al conejo cornudo (Ubuntu Jaunty) que el script me construye el marco, pero me deja la foto en B&N. Lo he probado desde el propio directorio donde tengo la imagen y desde el /bin (que es donde se puede usar indiscriminademente).
convert -version
Dime que versión de imagemagick usar el conejilope y lo pruebo con esa misma versión a ver...
jose@jose-desktop:~$ convert -version
Version: ImageMagick 6.4.5 2009-01-22 Q16 OpenMP http://www.imagemagick.org
Copyright: Copyright (C) 1999-2008 ImageMagick Studio LLC
Version: ImageMagick 6.4.5 2009-01-22 Q16 OpenMP http://www.imagemagick.org
... Un saludo y gracias por aceptarme en esta comunidad libre :) .Faltaría más... si quieres, pásate por el subforo de presentaciones (http://comunidad.fotolibre.net/index.php/board,4.0.html) que serás agasajado con todos los honores, alfombra de pétalos incluida... q:)
En el otro marco que creó redy, el que es transparente y va superpuesto encima de la foto que quieras enmarcar, el terminal me de este error: "convert: unable to open image `f-/home/rober/Imágenes/R0010912.JPG': No such file or directory @ magick/blob.c/OpenBlob/2418."
jose@jose-desktop:~/bin$ ponmarco prueba.jpg
Poniendo marco a prueba.jpg -> ./s_prueba.jpg
convert: unable to read font `/usr/share/fonts/TTF/VeraBI.ttf' @ magick/annotate.c/RenderType/1066.
jose@jose-desktop:~/bin$ enmarca prueba.jpg
Poniendo marco a -> prueba.jpg
convert: unable to read font `/usr/share/fonts/TTF/VeraBI.ttf' @ magick/annotate.c/RenderType/1066.
jose@jose-desktop:~/bin$
jose@jose-desktop:~/bin$ convert -version
Version: ImageMagick 6.4.5 2009-06-04 Q16 OpenMP http://www.imagemagick.org
Copyright: Copyright (C) 1999-2008 ImageMagick Studio LLC
Estas cosas te pasan por copión. :-XX :-XX :-XX :toma:
Hola redy,
Investigando tu script, ...
(...)
Es curioso que el lienzo sea gris... por cierto me da un error respecto a la fuente (que se corrige cuando le doy el path correcto) que te incluyo para descartar todas las posibilidades. Con el path corregido sigue dando un lienzo gris... :cabezazos:Código: [Seleccionar]jose@jose-desktop:~/bin$ ponmarco prueba.jpg
(...)
Poniendo marco a prueba.jpg -> ./s_prueba.jpg
convert: unable to read font `/usr/share/fonts/TTF/VeraBI.ttf' @ magick/annotate.c/RenderType/1066.
jose@jose-desktop:~/bin$ enmarca prueba.jpg
Poniendo marco a -> prueba.jpg
convert: unable to read font `/usr/share/fonts/TTF/VeraBI.ttf' @ magick/annotate.c/RenderType/1066.
jose@jose-desktop:~/bin$
FONT="/usr/share/fonts/TTF/VeraBI.ttf"
que tienes que editar y poner el de la tuya.COLOR="ORANGE"
TINTA="#101010"
Respecto a la fuente, entiendo que ya sabes que en cada distro suele variar y que para eso está la líneaCódigo: [Seleccionar]FONT="/usr/share/fonts/TTF/VeraBI.ttf"
que tienes que editar y poner el de la tuya.
Porfa, pégalo completo en un nuevo mensaje y lo miramos. Así podemos probarlo en nuestros ordenatas a ver qué nos sale.
#!/bin/bash
#
# Pone un marco con sombra a las imágenes que le digamos
#
# Basado en el script dropsh de Jesús J. Del Carpio
# http://www.isgeek.net/files/dropsh
#
#
# Valores por defecto
TIT1="http://www.fotolibre.net"
TIT2="%d"
COPY="$(date +%Y) Redy Rodriguez"
FONT1="/usr/share/fonts/TTF/VeraBI.ttf"
FONT2="$FONT1"
FONT="$FONT1"
CCFONT="/usr/share/fonts/ttf/decoratives/cc-icons.ttf"
ICONOS='c,b,a'
ANCHO=""
DTAMANO1="" # Los tamaños de fuente calculan luego como 3/5 del ancho
DTAMANO2=""
DTAMANO3=""
DMARCO="" # Tamaño del marco por defecto
POS1="center"
POS2="west"
POSCOPY="southeast"
PREFIJO="s_"
_SOMBRA="8"
_BORDE="20"
COLOR="ORANGE"
TINTA="#101010"
# Array para traducir los valores numéricos 1-6 a las posiciones que
# hay que pasar a imagemagick con el parámetro gravity
POSICIONESC=( "" southwest south southeast )
POSICIONES=( "" west center east)
macrotit() ## Resuelve las macros de los títulos
{
local inicio resto1 resto result
if [ ! -z "$1" ]; then
inicio="${1%%\%*}"
resto1="${1:$(( ${#inicio} + 1 )):1}"
resto="${1:$(( ${#inicio} + 2 ))}"
case $resto1 in
F ) # Nombre del fichero
result="$(basename "$2")"
;;
f ) # Nombre del fichero sin extensión
result="$(basename "$2" ".${2##*.}")"
;;
d ) # Fecha de disparo, o si no existe del fichero
result="$(exiftool -d "%x %X" -DateTimeOriginal -S -s "$2")"
if [ -z "$result" ]; then
result="$(date -r "$2" "+%x %X")"
fi
;;
D ) # Fecha del fichero
result="$(date -r "$2" "+%x %X")"
;;
s ) # Velocidad del obturador
result="$(exiftool -S -s -ShutterSpeed "$2")"
;;
a ) # Apertura del diafragma
result="$(exiftool -Aperture -S -s "$2")"
;;
l ) # Longitud focal de la lente
result="$(exiftool -FocalLength -S -s "$2")"
;;
L ) # Longitud focal equivalente en 35mm (o si no se puede obtener, la real)
result="$(exiftool -FocalLengthIn35mmFormat -S -s "$2")"
if [ -z "$result" ]; then
result="$(exiftool -FocalLength -S -s "$2")"
fi
;;
c ) # Comentario de usuario
result="$(exiftool -UserComment -S -s "$2")"
;;
C ) # Comentario de usuario, o si no existe, nombre del fichero
result="$(exiftool -UserComment -S -s "$2")"
if [ -z "$result" ]; then
result="$(basename "$2")"
fi
;;
* )
result="$resto1"
;;
esac
## Se podría hacer de otra forma pero preferí la recursividad
## La funcion resuelve el primer % y luego se llama a si misma con
## el resto hasta que el resto es la cadena vacía.
echo -n "${inicio}${result}$(macrotit "${resto}" "$2")"
fi
}
while [ $# -gt 0 ]; do
PARAM="$1"
case "$PARAM" in
"--help"|--usage|-h)
echo ""
echo "Uso:"
echo ""
echo " $0 --help|--usage|-h Muestra esta ayuda"
echo " $0 [opciones] img-1 [... img-n] [... [opciones] img-n1 [... img-nn]]"
echo ""
cat <<FINDETEXTO
opciones disponibles:
--tamanomarco|-g Ancho del marco en pixels.
--titulo1|-t1 "Puede haber hasta 2 títulos (t1 y t2)"
--titulo2|-t2 "t2 por defecto es la fecha de disparo"
En los título se pueden usar las siguentes macros:
%F Nombre del fichero
%f Nombre del fichero sin extensión
%d Fecha de disparo, o si no existe del fichero
%D Fecha del fichero
%s Velocidad del obturador
%a Apertura del diafragma.
%l Longitud focal de la lente.
%L Longitud focal equivalente en 35mm
(o si no se puede obtener, la real).
%c Comentario de usuario.
%C Comentario de usuario, o si no existe,
nombre del fichero.
--copyright|-m "Mensaje de copyright que aparece a la derecha"
--iconos|-i Iconos previos al mensaje de copyright:
c=(CC), a=SA, b= BY, f=(=), n=NC, m=Sampling,
s=Share, p=PD r=Remix, C:Logo CC
para dejar un espacio pequeño entre símbolos
usar ',', para espacio mayor ' ', por ejemplo:
-i "c b,a"
--font3|-f Estilo de letra o fichero de fuente .ttf para mensaje
de copyright
--font1|-f1 Fuente para el título1
--font2|-f2 Fuente para el titulo2 (por defecto la misma que título1)
--tamano|-s Tamaño de la letra en puntos para copyright
--tamano1|-s1 Tamaño de letra para título1 (por defecto = título)
--tamano2|-s2 Tamaño de letra para título2 (por defecto = título)
--ptitulo1|-p1 Posición para título1 (Por defecto 2)
--ptitulo2|-p2 Posición para título2 (Por defecto 1)
--pcopy|-q Posición para copyright (Por defecto 3)
Las posicioones posibles son:
1 - izquierda
2 - centrado
3 - derecha
--borde|-b Tamaño del borde
--sombra|-h Tamaño de la sombra
--color|-c Color del borde
--tinta|-i Color del texto
FINDETEXTO
exit 0
;;
"--titulo"|"-t")
shift
TIT="$1"
;;
"--titulo1"|"-t1")
shift
TIT1="$1"
;;
"--titulo2"|"-t2")
shift
TIT2="$1"
;;
"--copyright"|"-m")
shift
COPY=$1
;;
"--iconos"|"-i")
shift
ICONOS=$1
;;
"--font"|"-f")
shift
FONT=$1
;;
"--font1"|"-f1")
shift
FONT1=$1
;;
"--font2"|"-f2")
shift
FONT2=$1
;;
"--tamano"|"-s")
shift
DTAMANO=$1
;;
"--tamano1"|"-s1")
shift
DTAMANO1=$1
;;
"--tamano2"|"-s2")
shift
DTAMANO2=$1
;;
"--borde"|"-b")
shift
DBORDE=$1
;;
"--sombra"|"-h")
shift
DSOMBRA=$1
;;
"--tinta"|"-i")
shift
TINTA=$1
;;
"--color"|"-c")
shift
COLOR=$1
;;
"--ptitulo1"|"-p1")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 3 ]; then
POS1=${POSICIONES[$1]}
fi
;;
"--ptitulo2"|"-p2")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 3 ]; then
POS2=${POSICIONES[$1]}
fi
;;
"--pcopy"|"-q")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 3 ]; then
POSCOPY=${POSICIONESC[$1]}
fi
;;
"--tamanomarco"|"-g")
shift
DMARCO=$1
;;
*)
if [ -f "$PARAM" ]; then
IN="$PARAM"
OUT="$(dirname "$PARAM")/${PREFIJO}$(basename "$PARAM")"
imageSize="$(identify -format "%w %h" "$IN")"
imageX="${imageSize%% *}"
imageY="${imageSize##* }"
if [ $imageX -gt $imageY ]; then MAXsize=imageX; else MAXsize=imageY; fi
if !(( DMARCO >= 1 )); then
MARCO="$(( MAXsize/25+1 ))"
else
MARCO="$DMARCO"
fi
if (( DBORDE >= 1 )); then
BORDE=$DBORDE
else
BORDE=$_BORDE
fi
if (( DSOMBRA >= 1 )); then
SOMBRA=$DSOMBRA
else
SOMBRA=$_SOMBRA
fi
if (( DTAMANO >= 1 )); then
TAMANO=$DTAMANO
else
TAMANO="$((MARCO/3+1))"
fi
if (( DTAMANO1 >= 1 )); then
TAMANO1=$DTAMANO1
else
TAMANO1="$((MARCO/2+1))"
fi
if (( DTAMANO2 >= 1 )); then
TAMANO2=$DTAMANO2
else
TAMANO2="$((MARCO/3+1))"
fi
MTIT1=$(macrotit "$TIT1" "$IN")
MTIT2=$(macrotit "$TIT2" "$IN")
echo "Poniendo marco a $IN -> $OUT"
convert \
\( "$IN" -modulate 80 +contrast +contrast +contrast\
-colorspace gray \
-channel RGBA \
-bordercolor "$COLOR" \
-border "$(( SOMBRA*2 ))x$(( SOMBRA*2 ))" \
-blur "0x$((SOMBRA/5+5))" \
-shave "${SOMBRA}x${SOMBRA}" \
-gravity northwest \
"$IN" -colorspace RGB -compose src-in -composite \
-bordercolor "$COLOR" -border "${BORDE}x${BORDE}" \
-gravity southeast \
-crop "+$(( SOMBRA*2 ))+$(( SOMBRA*2 ))" \
\( -background "$COLOR" -size "$((imageX+2*BORDE))"x"$MARCO" xc:"$COLOR" \
-fill "$TINTA" \
-gravity "$POS1" -font "$FONT1" -pointsize "$TAMANO1" -draw "text $((BORDE * ( ${#POS1}!=6) )),0 '$MTIT1'" \
-gravity "$POS2" -font "$FONT2" -pointsize "$TAMANO2" -draw "text $((BORDE * ( ${#POS2}!=6) )),0 '$MTIT2'" \) \
-append \
\( -background "$COLOR" -size 0x0 -fill "$TINTA" -pointsize \
"$(( TAMANO * 100 / 75 ))" \
-font "$CCFONT" label:"$ICONOS" \
-font "$FONT" -pointsize "$TAMANO" \
label:"$COPY" +append \) \
-gravity "$POSCOPY" -geometry +$((BORDE * ( ${#POSCOPY}!=5) ))+"$TAMANO" \) \
-composite -compose src-in \
"$OUT"
else
echo "$1 : parámetro o nombre de fichero incorrecto. Use -h para ayuda"
fi
;;
esac
shift
done
Tengo que darle unas vueltas al tema
Tengo que darle unas vueltas al tema
Las que necesites.
De todas formas estoy esperando la nueva versión del Ubuntu, para hacer una instalación en limpio y en 64 bitios y entonces veremos si es un problema de la actualización a la v 9.04 (no instalación limpia).
Saludos
Jose
yo la -colorspace gray\ le he sustituido el parametro por RGB y me ha funcionado.
Ya que estamos una pregunta Redy ¿Donde marca el tamaño del borde de abajo del marco?
#!/bin/bash
#
# Pone un marco con sombra a las imágenes que le digamos
#
# Basado en el script dropsh de Jesús J. Del Carpio
# http://www.isgeek.net/files/dropsh
#
#
# Valores por defecto
TIT1="http://www.fotolibre.net"
TIT2="%d"
COPY="$(date +%Y) Redy"
FONT1="Bitstream-Vera-Sans-Bold-Oblique"
FONT2="$FONT1"
FONT="$FONT1"
CCFONT="CC-Icons-Regular"
ICONOS='c,b,a'
ANCHO=""
DTAMANO1="" # Los tamaños de fuente calculan luego como 3/5 del ancho
DTAMANO2=""
DTAMANO3=""
DMARCO="" # Tamaño del marco por defecto
POS1="center"
POS2="west"
POSCOPY="southeast"
PREFIJO="s_"
_SOMBRA="12"
_BORDE="22"
COLOR="White"
TINTA="Blue"
# Array para traducir los valores numéricos 1-6 a las posiciones que
# hay que pasar a imagemagick con el parámetro gravity
POSICIONESC=( "" southwest south southeast )
POSICIONES=( "" west center east)
macrotit() ## Resuelve las macros de los títulos
{
local inicio resto1 resto result
if [ ! -z "$1" ]; then
inicio="${1%%\%*}"
resto1="${1:$(( ${#inicio} + 1 )):1}"
resto="${1:$(( ${#inicio} + 2 ))}"
case $resto1 in
F ) # Nombre del fichero
result="$(basename "$2")"
;;
f ) # Nombre del fichero sin extensión
result="$(basename "$2" ".${2##*.}")"
;;
d ) # Fecha de disparo, o si no existe del fichero
result="$(exiftool -d "%x %X" -DateTimeOriginal -S -s "$2")"
if [ -z "$result" ]; then
result="$(date -r "$2" "+%x %X")"
fi
;;
D ) # Fecha del fichero
result="$(date -r "$2" "+%x %X")"
;;
s ) # Velocidad del obturador
result="$(exiftool -S -s -ShutterSpeed "$2")"
;;
a ) # Apertura del diafragma
result="$(exiftool -Aperture -S -s "$2")"
;;
l ) # Longitud focal de la lente
result="$(exiftool -FocalLength -S -s "$2")"
;;
L ) # Longitud focal equivalente en 35mm (o si no se puede obtener, la real)
result="$(exiftool -FocalLengthIn35mmFormat -S -s "$2")"
if [ -z "$result" ]; then
result="$(exiftool -FocalLength -S -s "$2")"
fi
;;
c ) # Comentario de usuario
result="$(exiftool -UserComment -S -s "$2")"
;;
C ) # Comentario de usuario, o si no existe, nombre del fichero
result="$(exiftool -UserComment -S -s "$2")"
if [ -z "$result" ]; then
result="$(basename "$2")"
fi
;;
* )
result="$resto1"
;;
esac
## Se podría hacer de otra forma pero preferí la recursividad
## La funcion resuelve el primer % y luego se llama a si misma con
## el resto hasta que el resto es la cadena vacía.
echo -n "${inicio}${result}$(macrotit "${resto}" "$2")"
fi
}
# Preparamos el asunto del directorio temporal y ponemos un trap para borrarlo
# tanto si finaliza correctamente como si se produce un error.
DIRTEMP="$(mktemp -d -p "${TMP:-/tmp}" marcoXXXXXXX)" \
&& trap 'rm -rf "$DIRTEMP"' SIGINT SIGTERM SIGQUIT EXIT \
|| { echo 'Error creando directorio temporal' >&2; exit 1; }
while [ $# -gt 0 ]; do
PARAM="$1"
case "$PARAM" in
"--help"|--usage|-h)
echo ""
echo "Uso:"
echo ""
echo " $0 --help|--usage|-h Muestra esta ayuda"
echo " $0 [opciones] img-1 [... img-n] [... [opciones] img-n1 [... img-nn]]"
echo ""
cat <<FINDETEXTO
opciones disponibles:
--tamanomarco|-g Ancho del marco en pixels.
--titulo1|-t1 "Puede haber hasta 2 títulos (t1 y t2)"
--titulo2|-t2 "t2 por defecto es la fecha de disparo"
En los título se pueden usar las siguentes macros:
%F Nombre del fichero
%f Nombre del fichero sin extensión
%d Fecha de disparo, o si no existe del fichero
%D Fecha del fichero
%s Velocidad del obturador
%a Apertura del diafragma.
%l Longitud focal de la lente.
%L Longitud focal equivalente en 35mm
(o si no se puede obtener, la real).
%c Comentario de usuario.
%C Comentario de usuario, o si no existe,
nombre del fichero.
--copyright|-m "Mensaje de copyright que aparece a la derecha"
--iconos|-i Iconos previos al mensaje de copyright:
c=(CC), a=SA, b= BY, f=(=), n=NC, m=Sampling,
s=Share, p=PD r=Remix, C:Logo CC
para dejar un espacio pequeño entre símbolos
usar ',', para espacio mayor ' ', por ejemplo:
-i "c b,a"
--font3|-f Estilo de letra o fichero de fuente .ttf para mensaje
de copyright
--font1|-f1 Fuente para el título1
--font2|-f2 Fuente para el titulo2 (por defecto la misma que título1)
--tamano|-s Tamaño de la letra en puntos para copyright
--tamano1|-s1 Tamaño de letra para título1 (por defecto = título)
--tamano2|-s2 Tamaño de letra para título2 (por defecto = título)
--ptitulo1|-p1 Posición para título1 (Por defecto 2)
--ptitulo2|-p2 Posición para título2 (Por defecto 1)
--pcopy|-q Posición para copyright (Por defecto 3)
Las posicioones posibles son:
1 - izquierda
2 - centrado
3 - derecha
--borde|-b Tamaño del borde
--sombra|-h Tamaño de la sombra
--color|-c Color del borde
--tinta|-i Color del texto
FINDETEXTO
exit 0
;;
"--titulo"|"-t")
shift
TIT="$1"
;;
"--titulo1"|"-t1")
shift
TIT1="$1"
;;
"--titulo2"|"-t2")
shift
TIT2="$1"
;;
"--copyright"|"-m")
shift
COPY=$1
;;
"--iconos"|"-i")
shift
ICONOS=$1
;;
"--font"|"-f")
shift
FONT=$1
;;
"--font1"|"-f1")
shift
FONT1=$1
;;
"--font2"|"-f2")
shift
FONT2=$1
;;
"--tamano"|"-s")
shift
DTAMANO=$1
;;
"--tamano1"|"-s1")
shift
DTAMANO1=$1
;;
"--tamano2"|"-s2")
shift
DTAMANO2=$1
;;
"--borde"|"-b")
shift
DBORDE=$1
;;
"--sombra"|"-h")
shift
DSOMBRA=$1
;;
"--tinta"|"-i")
shift
TINTA=$1
;;
"--color"|"-c")
shift
COLOR=$1
;;
"--ptitulo1"|"-p1")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 3 ]; then
POS1=${POSICIONES[$1]}
fi
;;
"--ptitulo2"|"-p2")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 3 ]; then
POS2=${POSICIONES[$1]}
fi
;;
"--pcopy"|"-q")
shift
if [ "$(( $1 ))" -gt 0 -a "$(( $1 ))" -le 3 ]; then
POSCOPY=${POSICIONESC[$1]}
fi
;;
"--tamanomarco"|"-g")
shift
DMARCO=$1
;;
*)
if [ -f "$PARAM" ]; then
IN="$PARAM"
OUT="$(dirname "$PARAM")/${PREFIJO}$(basename "$PARAM")"
imageSize="$(identify -format "%w %h" "$IN")"
imageX="${imageSize%% *}"
imageY="${imageSize##* }"
if [ $imageX -gt $imageY ]; then MAXsize=imageX; else MAXsize=imageY; fi
if !(( DMARCO >= 1 )); then
MARCO="$(( MAXsize/25+1 ))"
else
MARCO="$DMARCO"
fi
if (( DBORDE >= 1 )); then
BORDE=$DBORDE
else
BORDE=$_BORDE
fi
if (( DSOMBRA >= 1 )); then
SOMBRA=$DSOMBRA
else
SOMBRA=$_SOMBRA
fi
if (( DTAMANO >= 1 )); then
TAMANO=$DTAMANO
else
TAMANO="$((MARCO/3+1))"
fi
if (( DTAMANO1 >= 1 )); then
TAMANO1=$DTAMANO1
else
TAMANO1="$((MARCO/2+1))"
fi
if (( DTAMANO2 >= 1 )); then
TAMANO2=$DTAMANO2
else
TAMANO2="$((MARCO/3+1))"
fi
MTIT1=$(macrotit "$TIT1" "$IN")
MTIT2=$(macrotit "$TIT2" "$IN")
# Generamos la sombra y el borde
convert \
"$IN" -modulate 80 +contrast +contrast +contrast\
-colorspace gray \
-channel RGBA \
-bordercolor "$COLOR" \
-border "$(( SOMBRA*2 ))x$(( SOMBRA*2 ))" \
-blur "0x$((SOMBRA/5+5))" \
-shave "${SOMBRA}x${SOMBRA}" \
-gravity northwest -bordercolor "$COLOR" -border "${BORDE}x${BORDE}" \
-gravity southeast \
-crop "+$(( SOMBRA*2 ))+$(( SOMBRA*2 ))" \
-background "$COLOR" -size "$((imageX+2*BORDE))"x"$MARCO" xc:"$COLOR" \
"${DIRTEMP}/tmp.miff" \
# Ponemos los títulos
convert "${DIRTEMP}/tmp.miff" \
-colorspace RGB \
-channel RGBA \
-fill "$TINTA" \
-gravity "$POS1" -font "$FONT1" -pointsize "$TAMANO1" -draw "text $((BORDE * ( ${#POS1}!=6) )),0 '$MTIT1'" \
-gravity "$POS2" -font "$FONT2" -pointsize "$TAMANO2" -draw "text $((BORDE * ( ${#POS2}!=6) )),0 '$MTIT2'" \
-append \
\( -background "$COLOR" -size 0x0 -fill "$TINTA" -pointsize \
"$(( TAMANO * 100 / 75 ))" \
-font "$CCFONT" label:"$ICONOS" \
-font "$FONT" -pointsize "$TAMANO" \
label:"$COPY" +append \) \
-gravity "$POSCOPY" -geometry +$((BORDE * ( ${#POSCOPY}!=5) ))+"$TAMANO" \
-composite -compose src-in "${DIRTEMP}/tmp2.miff"
# Ponemos la imágen original encima
convert -gravity northwest -geometry +${BORDE}+${BORDE} -composite "${DIRTEMP}/tmp2.miff" "$IN" "$OUT"
# Descomentar las dos líneas siguientes para obtener una copia de los ficheros temporales antes de borrarlos
# cp "${DIRTEMP}/tmp.miff" "$OUT-tmp.miff "
# cp "${DIRTEMP}/tmp2.miff" "$OUT-tmp2.miff"
else
echo "$1 : parámetro o nombre de fichero incorrecto. Use -h para ayuda"
fi
;;
esac
shift
done
jose@jose-desktop:~/Imagenes/2009-09-20--13.56.21$ ponmarco pertusa_pano.jpg
mktemp: invalid option -- '-'
Usage: mktemp [-V] | [-dqtu] [-p prefix] [template]
convert: unable to open image `/tmp.miff': Permission denied @ magick/blob.c/OpenBlob/2418.
convert: unable to open image `/tmp.miff': No such file or directory @ magick/blob.c/OpenBlob/2418.
convert: unable to read font `/usr/share/fonts/TTF/VeraBI.ttf' @ magick/annotate.c/RenderType/1066.
convert: missing an image filename `/tmp2.miff' @ wand/convert.c/ConvertImageCommand/2710.
convert: wand/mogrify.c:7575: SyncImagesSettings: Assertion `images != (Image *) ((void *)0)' failed.
/home/jose/bin/ponmarco: line 107: 6124 Cancelado convert -gravity northwest -geometry +${BORDE}+${BORDE} -composite "${DIRTEMP}/tmp2.miff" "$IN" "$OUT"
jose@jose-desktop:~/Imagenes/2009-09-20--13.56.21$ sudo ponmarco pertusa_pano.jpg
[sudo] password for jose:
sudo: ponmarco: command not found
Con el permiso de Redy, Colegota y demas maestros me parece que despues de mucha prueba/error he dado con el problema de la imagen en blanco y negro que deja despues de ponerle el marco.
Las primeras lineas de convert son:
"convert \
\( "$IN" -modulate 80 +contrast +contrast +contrast\
-colorspace gray \
-channel RGBA \"
yo la -colorspace gray\ le he sustituido el parametro por RGB y me ha funcionado.
He probado y esto es lo que me dice:Código: [Seleccionar]jose@jose-desktop:~/Imagenes/2009-09-20--13.56.21$ ponmarco pertusa_pano.jpg
mktemp: invalid option -- '-'
Usage: mktemp [-V] | [-dqtu] [-p prefix] [template]
¿Y no te pone también en color la sombra?
¿Y no te pone también en color la sombra?No la sombra me la pone en negro. Tambien he probado ha ponerla en color y me la pone bien en color.
He probado y esto es lo que me dice:Código: [Seleccionar]jose@jose-desktop:~/Imagenes/2009-09-20--13.56.21$ ponmarco pertusa_pano.jpg
mktemp: invalid option -- '-'
Usage: mktemp [-V] | [-dqtu] [-p prefix] [template]
NO LO EJECUTEIS CON SUDO (por suerte no funcionó) sobre todo mientras estemos probando
He cambiado un poquito en torno a las líneas 101, 102 y 103 cópialo de nuevo y me cuentas.
jose@jose-desktop:~/Imagenes/2009-05-19--17.00.00$ marcoredyv1 aquell_arbre.jpg
convert: unable to read font `/usr/share/fonts/TTF/VeraBI.ttf' @ magick/annotate.c/RenderType/1066.
El resultado en vertical y en horizontal:
Para adaptar el scripts a todas las distribuciones de linux no sería mejor usar estas definiciones?
FONT1="Bitstream-Vera-Sans-Bold-Oblique"
CCFONT="CC-Icons-Regular"
#! /bin/bash
#-----------------------------------------------------
# macborde.sh
# borde compuesto por filete blanco y otro negro
# de anchura variable.
# autor: Marcelo Anelli C.
#
# v1.00 20/08/2009 programa base
# v1.01 09/09/2009 control de entrada de datos
# v1.02 30/09/2009 separado de los textos usando gravity.
#
#-----------------------------------------------------
FUENTE="Bookman-DemiItalic" # fuente a usar
CW=30 # Filete blanco
CN=50 # Borde Negro
PAR1="Fotografías de Marcelo Anelli"
CT="Fotografía: Marcelo Anelli, Caracas, 2009."
COLNEGRO="black"
COLBLANCO="white"
while [ ! -z "$1" ]; do
PARAM="$1"
case $PARAM in
"--help"|--usage|-h)
echo "Borde con filete blanco y filete negro al estilo MAC."
echo "-----------------------------------------------------"
echo ""
echo "Uso:"
echo ""
echo " $0 --help|--usage|-h Muestra esta ayuda"
echo " $0 [opciones] imágen"
echo ""
echo " opciones disponibles:"
echo ""
echo " --titulo|-t \"Título de la imágen\""
echo " --copyright|-c \"Mensaje de copyright\""
echo " --font|-f Estilo de letra o fichero de fuente .ttf"
echo " --tamano|-s Tamaño de la letra en puntos"
echo " --tamanonegro|-n Tamaño del marco negro en pixels"
echo " --tamanoblanco|-b Tamaño del marco blanco en pixels"
echo " --colnegro|-cn Sustituir el negro por otro color."
echo " --colblanco|-cb Sustituir el blanco por otro color."
echo ""
exit 0
;;
"--titulo"|"-t")
shift
PAR1="$1"
;;
"--copyright"|"-c")
shift
CT="$1"
;;
"--font"|"-f")
shift
FUENTE="$1"
;;
"--tamano"|"-s")
shift
TAMANO=$1
;;
"--tamanonegro"|"-n")
shift
CN=$1
;;
"--tamanoblanco"|"-b")
shift
CW=$1
;;
"----colnegro"|"-cn")
shift
COLNEGRO="$1"
;;
"----colblanco"|"-cb")
shift
COLBLANCO="$1"
;;
*)
if [ -f "$PARAM" ]; then
convert "$PARAM" -bordercolor "$COLBLANCO" -border $CW \
-bordercolor "$COLNEGRO" -border $CN \
-fill white -font $FUENTE -gravity NorthWest -draw "text 10,25 '$PAR1'" \
-gravity NorthEast -draw "text 10,25 '$CT'" "p_$PARAM"
fi
;;
esac
shift
done
Espero que sirva para alguien....Seguro que si, gracias por tu aportación Marcelo :-)
La 6.5 va bien pero tendrás que compilarla.
./configure --prefix=/usr/local
identify: error while loading shared libraries: libMagickCore.so.2: cannot open shared object file: No such file or directory
convert: error while loading shared libraries: libMagickWand.so.2: cannot open shared object file: No such file or directory
sudo ln -s /usr/local/lib/libMagickCore.so.2 /usr/lib/
sudo ln -s /usr/local/lib/libMagickWand.so.2 /usr/lib/