Autor Tema: Bordes  (Leído 71453 veces)

jofial

  • Palizas oficial
  • *
  • Mensajes: 9513
  • Φ el · sobre la y
Re: Bordes
« Respuesta #60 on: 25 sep 2009, 22:03 pm »
Respecto a la fuente, entiendo que ya sabes que en cada distro suele variar y que para eso está la línea
Código: [Seleccionar]
FONT="/usr/share/fonts/TTF/VeraBI.ttf"que tienes que editar y poner el de la tuya.

Si, asi lo tenia, pero para no modificar nada del original de redy no lo cambie.

Porfa, pégalo completo en un nuevo mensaje y lo miramos. Así podemos probarlo en nuestros ordenatas a ver qué nos sale.

Ahi va... pero es el mismo  :ejem:

Código: [Seleccionar]
#!/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

Saludos y gracias por acordaros.

Jose
No hay nada peor que una imagen brillante de un concepto borroso.
Ansel Adams


jofial

  • Palizas oficial
  • *
  • Mensajes: 9513
  • Φ el · sobre la y
Re: Bordes
« Respuesta #61 on: 25 sep 2009, 22:05 pm »
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
No hay nada peor que una imagen brillante de un concepto borroso.
Ansel Adams


buhito

  • Asidu@
  • **
  • Mensajes: 45
Re: Bordes
« Respuesta #62 on: 26 sep 2009, 18:03 pm »
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

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.

A tener en cuenta soy novato en Linux y fotografia por lo tanto que opinen ellos.

Ya que estamos una pregunta Redy ¿Donde marca el tamaño del borde de abajo del marco?

Un saludo a todos.

redy

  • Moderador
  • Bimilenari@
  • *****
  • Mensajes: 2897
  • Gnudista
    • Esteropes El Cíclope
Re: Bordes
« Respuesta #63 on: 26 sep 2009, 18:30 pm »
yo la -colorspace gray\  le he sustituido el parametro por RGB y me ha funcionado.


¿Y no te pone también en color la sombra?

Cita
Ya que estamos una pregunta Redy ¿Donde marca el tamaño del borde de abajo del marco?

Lo puedes decidir tu (al igual que muchas otras cosas) pasando un valor en pixels tras el parámetro -g o --tamanomarco

Por defecto se calcula como MARCO="$(( MAXsize/25+1 ))" o sea un 25avo del lado mayor de la imágen original mas un pixel.

Y ahora al grano. Una primera version del asunto trabajando 'por tramos' que creo que debería solucionar el problema del blanco y negro que por lo visto sólo pasa con algunas versiones de imagemagick podría ser esta:

Código: [Seleccionar]
#!/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

Ya me contareis si funciona. Si funciona a ver si lo simplifico un poco más, luego le atacaré al otro y prepararé los wizards...
« Última Modificación: 30 sep 2009, 20:57 pm por redy »
Admiro a la gente que sabe contar historias solamente con sus fotos, porque en el fondo las fotos son como los chistes; si tienes que explicarlas es que no son buenas...


jofial

  • Palizas oficial
  • *
  • Mensajes: 9513
  • Φ el · sobre la y
Re: Bordes
« Respuesta #64 on: 26 sep 2009, 20:09 pm »
Hola redy,

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]
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"

Lo he intentado con el comando "sudo" y me dice

Código: [Seleccionar]
jose@jose-desktop:~/Imagenes/2009-09-20--13.56.21$ sudo ponmarco pertusa_pano.jpg
[sudo] password for jose:
sudo: ponmarco: command not found

Pero encantado de hacer de "betatester"  ;) Ya nos dirás que tenemos que hacer ahora.



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.

Y a mi también... :yahoo: :yahoo: :yahoo:

Saludos

Jose
No hay nada peor que una imagen brillante de un concepto borroso.
Ansel Adams


redy

  • Moderador
  • Bimilenari@
  • *****
  • Mensajes: 2897
  • Gnudista
    • Esteropes El Cíclope
Re: Bordes
« Respuesta #65 on: 26 sep 2009, 21:03 pm »

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]

Vale, falla al crear el directorio temporal y luego se estrella porque no existe.  NO LO EJECUTEIS CON SUDO (por suerte no funcionó) sobre todo mientras estemos probando, en principio el script es bastante inofensivo, pero ese 'rm -rf'  para borrar el directorio temporal en el trap, me preocupa. Tu imagínate que el fallo que hubo al crear el temporal hiciese que la variablel DIRTEMP acabara conteniendo un '/' solamente (eso es casi imposible pero imagínatelo) te cargarías todo el sistema de ficheros, y después mi cuello :buf:.

Creía que --tmpdir era un estandar en mktemp pero por lo visto solo debe funcionar en algunas versiones y la forma correcta debe ser hacerlo con -p

He cambiado un poquito en torno a las líneas 101, 102 y 103 cópialo de nuevo y me cuentas.

« Última Modificación: 26 sep 2009, 22:22 pm por redy »
Admiro a la gente que sabe contar historias solamente con sus fotos, porque en el fondo las fotos son como los chistes; si tienes que explicarlas es que no son buenas...


buhito

  • Asidu@
  • **
  • Mensajes: 45
Re: Bordes
« Respuesta #66 on: 27 sep 2009, 07:17 am »
¿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.


Saludos a todos.

jofial

  • Palizas oficial
  • *
  • Mensajes: 9513
  • Φ el · sobre la y
Re: Bordes
« Respuesta #67 on: 27 sep 2009, 08:21 am »
¿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.

Pues a mi me la pone en color  :sesiente: aqui la prueba.  :sesiente:

Saludos

Jose
No hay nada peor que una imagen brillante de un concepto borroso.
Ansel Adams


jofial

  • Palizas oficial
  • *
  • Mensajes: 9513
  • Φ el · sobre la y
Re: Bordes
« Respuesta #68 on: 27 sep 2009, 08:25 am »

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

Oido cocina... Por suerte tengo copias de seguridad... pero mejor saberlo. Asias  q:)


He cambiado un poquito en torno a las líneas 101, 102 y 103 cópialo de nuevo y me cuentas.

Marchando...

Saludos

Jose
No hay nada peor que una imagen brillante de un concepto borroso.
Ansel Adams


jofial

  • Palizas oficial
  • *
  • Mensajes: 9513
  • Φ el · sobre la y
Re: Bordes
« Respuesta #69 on: 27 sep 2009, 08:41 am »
Hola redy,

copiado tal cual lo has puesto y este es el resultado, antes la salida por terminal:

Código: [Seleccionar]
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.

Eso es porque no tengo esta fuente, pero cuando le pongo el path correcto a la fuente que suelo usas FreeSans, ese error no sale.

El resultado en vertical y en horizontal:





Saludos

Jose
No hay nada peor que una imagen brillante de un concepto borroso.
Ansel Adams


redy

  • Moderador
  • Bimilenari@
  • *****
  • Mensajes: 2897
  • Gnudista
    • Esteropes El Cíclope
Re: Bordes
« Respuesta #70 on: 27 sep 2009, 18:33 pm »
El resultado en vertical y en horizontal:

Pues veo dos problemas, lo del gris, que creo que con la última modificación que hice hace un momento debería resolverse y que la sombra la hace mal.

Leyendo leyendo, dicen que la versión de imagemagick que viene con la Ubuntu Conejilope Garboso apesta... y que lo mejor es o darle para adelante o para atrás. La 6.5 va bien pero tendrás que compilarla. La 6.3.7 que viene con la última debian también podría valer y esa igual puedes instalarla de un .deb quitando la 6.4.5 primero... No se que decirte, no tengo ubuntu para hacer experimentos.

Admiro a la gente que sabe contar historias solamente con sus fotos, porque en el fondo las fotos son como los chistes; si tienes que explicarlas es que no son buenas...


marceloanelli

  • Habitual
  • ***
  • Mensajes: 52
    • Fotografías de Zoraima y Marcelo
Re: Bordes
« Respuesta #71 on: 30 sep 2009, 18:06 pm »
Hola a todos,

no uso debian o ubuntu sino opensuse y tengo problema con las fuentes ya que están ubicadas en directorios diferentes. Adicionalmente opensuse separa las fuenes instaladas por el sistema y las instaladas por el usuario, de hecho en realidad no he averiguado donde están.

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"

La lista de las fuentes que reconoce convert puede obtnerse con convert -list font > fuentes.txt y claro está uno debe revisar el diseño de las mismas con los visores. Lamentablemente los visores no usan el mismo nombre que usa imagemagick.

Saludos,

redy

  • Moderador
  • Bimilenari@
  • *****
  • Mensajes: 2897
  • Gnudista
    • Esteropes El Cíclope
Re: Bordes
« Respuesta #72 on: 30 sep 2009, 21:03 pm »
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"

Pues tienes razón. Lo modifico.
Admiro a la gente que sabe contar historias solamente con sus fotos, porque en el fondo las fotos son como los chistes; si tienes que explicarlas es que no son buenas...


marceloanelli

  • Habitual
  • ***
  • Mensajes: 52
    • Fotografías de Zoraima y Marcelo
Re: Bordes sencillo doble filete clásico
« Respuesta #73 on: 30 sep 2009, 23:37 pm »
Usando la forma de codificación de los parámetros de entrada, que normalmente eran $1, $2,,, sin ningún chequeo, y tomando como ejemplo los scripts de este tema, he mejorado un poco el script que uso para poner un borde, bastante sobrio y clásico compuesto por un filete blanco alrededor de la imágen y luego otro negro donde se ubican los textos.

Código: [Seleccionar]
#! /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....

tat

  • Moderador
  • Palizas oficial
  • *****
  • Mensajes: 9622
  • Patch y buenas vibraciones
    • Libertat
Re: Bordes sencillo doble filete clásico
« Respuesta #74 on: 01 oct 2009, 04:23 am »
Espero que sirva para alguien....
Seguro que si, gracias por tu aportación Marcelo  :-)