Hoy:

29 abr 2011

ImageMagick: divertimento, ondear imagen

Como vamos a entrar en un fín de semana, para desengrasar voy a colocar un script que sirva como divertimento.
Como en otros artículos, acudo a mi herramienta favorita para trabajar con imágenes en linea de comandos: ImageMagick

Vamos a intentar hacer ondear una imagen, que podría ser una bandera...pero esta vez  haremos bailar una imagen que lleva un texto. La imagen original de ejemplo es esta:


Y queremos que quede así (hacer click en la imagen para ver la animación):


Pues no esperemos más, aquí esta el script:
#----------------------------------------------------------------------------------------------------------------------
#!/bin/sh

# Animar imagen ondeando la estructura


comando='convert -delay 20 imagen-original.png'
comando="$comando -background blue -bordercolor blue -border 5x2"

for i in `seq 100 -4 0;`; do
  comando="$comando \\( -clone 0 -splice ${i}x0+0+0 "
  comando="$comando -wave 4x100 -chop ${i}x0+0+0 \\)"
done

# Mejorar y eliminar lo que no necesitamos
comando="$comando +repage -delete 0 -loop 0 animacion.gif"

eval $comando

#----------------------------------------------------------------------------------------------------------------------
Lo guardamos, por ejemplo, como ondear.sh y le damos permiso de ejecución:

chmod  + x ondear.sh

En el directorio donde tenemos la imagen original, ejecutamos:

ondear.sh  imagen-original.png
¡Ya está!
Estudiar un poco el script y realizar modificaciones.

Buen fín de semana ;)

27 abr 2011

ImageMagick: Transiciones entre imágenes

He aquí otro ejemplo de las maravillas que pueden surgir de ImageMagick. Esta vez trataremos las transiciones, acudiremos a un gran artista y programador: Fred Weinhaus . No podemos dejar de ver e investigar sus trabajos con ImageMagick:
 http://www.fmwconcepts.com/imagemagick/index.php
Hoy vamos a comprobar el script transitions para adaptarlo a nuestras necesidades en el momento oportuno, ya sean animaciones, slideshows, presentaciones..etc.
Enlace al script transitions:
http://www.fmwconcepts.com/imagemagick/downloadcounter.php?scriptname=transitions&dirname=transitions

Método:
Necesitamos dos imágenes principales: una de inicio y otra final.
Y entre las dos: otra que actuará de máscara para desarrollar la transición.
El script se ejecuta así:
./transitions  [opciones]  imagen1   imagen2   imagen-máscara   resultado.gif

Ejemplo
1-Planteamiento inicial:
En este ejemplo con el que voy a trabajar creo un directorio vacío donde colocaré estos elementos:
2 imágenes entre mis fotos favoritas, una imagen en tonos grises que actuará de máscara, y el script 'transitions'
Recordar que los scripts deben tener permisos de ejecución, en este caso:
chmod  +x  transitions
Y la preparación queda así:

1-Vamos con la máscara: ha de ser una imagen en tonos grises, con formas suaves para que las transiciones sean más artísticas
Para comprender cómo actúa la máscara para crear las transiciones hay que tener en cuenta: que el movimiento va del blanco al negro, atravesando los tonos grises.
Creamos con Gimp una imagen con degradado, en tonos grises, con las mismas dimensiones que las principales:

máscara con degradado

Ahora aplicamos la transición estilo "persiana" que nos facilita la máscara que hemos creado.
Añadimos la opción -m wipe, para tener un resultado más "visible" de la transición. Si usamos  -m dissolve el resultado es una transición más suave, con menos constancia de la imagen que interviene como máscara.
./transitions   -m wipe   Foto1.jpg   Foto2.jpg   mask.jpg   resultado.gif
Y aquí está el resultado, hacer click en la imagen para ver la animación:
transición "cortina"

Opciones importantes para personalizar la transición:

-m wipeSe obtiene una transición más clara, con más "vida"
-m dissolve Se obtiene una transición muy suave, con fundido
-f  (frames) Por defecto el valor es 20 (cuadros que intervienen en la animación)
-r  (reverse) La animación se crea al revés
-p  (pause)  En las animaciones cíclicas, pausa entre repeticiones. Por defecto: 50
-d  (delay) Espera entre cuadros de la transición. Por defecto: 20
-e   Acentuar el fundido, transición más suave

Si no queremos que nuestra animación se repita cíclicamente (loop), basta con cambiar un valor en la línea 321 del script. La opción loop la cambiamos de 0 (infinito) a 1:








Y finalmente, he aquí algunos ejemplos con diferentes máscaras, igualmente hacer click en las imágenes para ver las animaciones:

Transición "abanico"
Transición "espiral"
Transición "rectángulo"
Transición abstracta
Ahora a investigar con diferentes máscaras, velocidades..etc
En otros artículos desarrollaremos con ejemplos otros scripts de Fred Weinhaus.
Si tenéis alguna duda podéis presentar consultas  en los comentarios, o enviarme un correo.

24 abr 2011

Okular: selección, recorte de imágenes y texto en documento PDF

En algunos momentos nos ha interesado algún fragmento de texto o una imágen determinada, contenidos en un documento pdf. Pues bien, para solucionar esto el programa Okular lo hace de forma brillante, sencilla y directa.  
Okular es un visor universal de documentos que suele incluir las distribuciones que tienen instalado KDE.
Paso a explicarlo con un ejemplo:
Abrimos un pdf  con Okular y se nos presenta así:

Nos interesa la imagen y el texto de referencia. Para ello activamos la pestaña de "Selección":


Y ahora, símplemente seleccionamos del documento lo que nos interesa y lo guardamos:

En este caso se ha seleccionado una imagen y la hemos guardado como png.
Podemos proceder igualmente con algún fragmento de texto, lo copiamos al portapapeles, para pegarlo posteriormente en un editor de texto o en LibreOffice:

 Y eso es todo, así de fácil.

18 abr 2011

ImageMagick: convertir entre formatos de imagen

Tenemos varias imágenes con formato *.jpg en un directorio, y necesitamos convertirlas en *.png. Pues nada más sencillo, acudimos a la construcción de un script y usamos el comando de ImageMagick: convert
Mirando la estructura del script deducimos que se puede usar para realizar muchas más tareas que nos pueden ir muy bien:
Lo podemos llamar convertir-por-lotes.sh, colocarlo en el directorio de las imágenes, y darle permisos de ejecución: chmod +x convertir-por-lotes.sh
-------------------------------------------------------------------------------------------------------------------------------------
#Script para convertir entre formatos (por lotes)
for imagen in  *.jpg;
do
archivo=${imagen%.*}
convert "$archivo.jpg" "$archivo.png"
done

-------------------------------------------------------------------------------------------------------------------------------------

15 abr 2011

Zenity: personaliza tu script

Efectívamente, Zenity nos permite crear scripts y diálogos (información, menú, ejecutables con opciones..etc) de una forma sencilla y muy práctica.
Si no lo tenemos lo instalamos, todas las distribuciones lo tienen en sus repositorios. En mi caso: sudo apt-get install zenity

Veamos un ejemplo para entender su funcionamiento:
"Hay un sitio remoto donde se actualiza diariamente una lección magistral en formato mp3, y queremos consultarlo cada día o de vez en cuando. El archivo sigue esta denominación, la fecha de cada día: 2011-04-14.mp3"
Veamos, si consultamos el comamdo date (fecha), tenemos que esta estructura es:  
2011 04 14
año mes día
%Y %m %d

Pues bien, ya sabemos que nuestra fecha sería --date-format=%Y'-'%m'-'%d
Vamos a comprobarlo en un terminal:
                                       date  +%Y'-'%m'-'%d
                                       2011-04-14

Ahora construímos el script:
-----------------------------------------------------------------------------------------------------------------------------

#!/bin/bash
#script para comprobar un archivo remoto consultando calendario. Guarda y reproduce
export
directorio="/home/pepe/remoto"

zenity --info --title="pon aqui tu titulo" --text="Elegir un día para........"

export
date=`zenity --calendar --date-format=%Y'-'%m'-'%d`

#Comprobamos si tenemos ya ese archivo en nuestro directorio
 if [ -f  $directorio/$date\.mp3 ]; 
#Si ya existe: zenity saca una ventana y nos informa que el archivo ya lo tenemos en el directorio. #Después xmms lo reproduce. Sustituir xmms por vuestro reproductor favorito
then zenity --info --title="pon aqui tu titulo" --text="ya existe el archivo";
 xmms http://tu-direccion-con-audio/$date\.mp3
#Si no existe: zenity saca una ventana y nos informa que el archivo se está descargando. 
# xmms lo reproduce mientras wget lo descarga del sitio remoto.
else 
zenity --info --title="pon aqui tu titulo" --text="Guardando en: /home/pepe/remoto/$date\.mp3" |

xmms http://tu-direccion-con-audio/$date\.mp3 |

wget
http://tu-direccion-con-audio/$date\.mp3 -P $
directorio/

#Aquí termina todo
fi
#Recordar hacer ejecutable el script con chmod  +x   nombre-script
-----------------------------------------------------------------------------------------------------------------------------
El calendario que saca zenity para elegir nuestra fecha tiene este buen aspecto:

Que cada uno  adapte el script a sus circunstancias. En futuros artículos trataremos con zenity otros ejemplos: menú de instalación personalizada, copia de seguridad, codificación de video y audio..ect

13 abr 2011

ImageMagick: Marcas de agua

Alguna vez hemos necesitado colocar una marca de agua con texto en un trabajo, algo como esto:


Quizás también nos venga bien esta técnica para realizar un montaje de fundido con varias imágenes..o ambas cosas:











Pasemos ahora a la magia de ImageMagick.
  • Marca de agua con texto:
Tenemos una imagen nubes.jpg  y queremos añadirle una marca de agua con el texto:
©Pepe Baeza

                                  Usaremos los comandos  convert, composite y mogrify.
                                  Todo en un script quedaría así, es bastante intuitivo:

convert  -size 300x60  xc:grey70  -font Arial -pointsize 40  -gravity  center  -draw "fill black text 0,0 '©Pepe Baeza'" capa-gris.png


convert -size 300x60 xc:black -font Arial -pointsize 40 -gravity center-draw "fill white  text  1,1  '©Pepe Baeza' text  0,0  '©Pepe Baeza' fill black  text -1,-1 '©Pepe Baeza'"  +matte mascara-capa.png 


composite -compose CopyOpacity  mascara-capa.png  capa-gris.png  marca-texto.png

mogrify -trim +repage marca-texto.png

 Si lo queremos centrar: -gravity center
composite -gravity center -geometry +20+12 marca-texto.png
nubes.jpg nubes-marca-agua-texto.jpg



 Si lo queremos colocar en la parte inferior-derecha: -gravity southeast
composite -gravity southeast -geometry +20+12 marca-texto.png
nubes.jpg nubes-marca-agua-texto.jpg


Que cada uno lo adapte a sus fotos (nombres y tamaño), el script completo está aquí:

10 abr 2011

ImageMagick: diapositivas

Empezaremos mostrando la magia de este paquete de comandos fabricándonos una página con formato A4 donde vamos a incrustar unas diapositivas con algunas de las fotos que hemos hecho esta primavera.
Usemos la lógica para montar el script:
Creamos un directorio de trabajo para no liarlo todo. En mi caso: diapositivas. Ahora colocamos todas nuestras fotos en este directorio ( concretamente 28) que vamos a distribuir en la página de esta forma: 4x7.
Las fotos estań convenientemente numeradas, y sería conveniente que tuvieran el mismo tamaño: Primavera-%3d.jpg
      Primavera-001.jpg  -  Primavera-002.jpg  -  Primavera-003.jpg  .......
Ahora procedemos a organizar el asunto:
  • Necesitamos una página A4:
      Para crearla usaremos uno de los maravillosos comando de  ImageMagick, convert :
      convert -size 595x842 xc:white paginaA4.png

        Lo que nos puede parecer extraño aquí es la opción xc, pues bien,
        se  trata de "canvas image", es decir, un lienzo, que en este caso es
        de  color blanco.

  • Ya tenemos el folio A4, ahora redimensionamos las fotos y las preparamos para posicionarlas en nuestro folio, creando la imagen paso1.png. Viene en nuestra ayuda el comando montage:
      montage  -quality 100  -geometry  +4+4  -resize 130x  -tile  4x7 Primavera*   paso1.png

      Está claro: redimensionamos las imágenes a 130 píxeles de ancho,
       el alto guarda la proporción.
       Le decimos que las ponga como celdas,  azulejos (tile), y que las
       distribuya en 4 filas por 7 columnas.
      -geometry  +4+4 son los espacios entre ellas.

  •  Y ahora colocamos nuestras flamantes diapositivas en el folio paginaA4.png, creando otra imagen: paso2.png . Para ello, usamos otro comando, composite :
composite   -quality 100  -geometry +0+70+0+0  -gravity north   -dissolve 100%  paso1.png  paginaA4.png  paso2.png

  • Y, por fín, le añadimos un texto en la parte superior indicando que se trata de nuestro índice de fotos. Otra vez usamos convert :
convert -quality 100 -fill black label:'ÍNDICE DE FOTOS' miff:- | composite -gravity north -geometry +0+12  -  paso2.png pagina-diapos.png


Todos estos comandos podemos colocarlos en un script para que se ejecute la magia; lo llamamos diapositivas.sh y lo hacemos ejecutable (chmod +x  diapositivas.sh). Abrimos un terminal en el directorio, lo ejecutamos y en 4 segundos tenemos nuestra página A4 con las diapositivas. Si le interesa a alguien, aquí está mi script:
diapositivas.sh.doc

Y el proceso de forma gráfica, click en imagen para ver mejor:

7 abr 2011

ImageMagick

No es exagerado, hay mucha magia en esto. Tal como indica su nombre, ImageMagick es un paquete de comandos con posibilidades gráficas realmente extraordinarias. Lo que más me gusta es precísamente la versatilidad que pueden llegar a tener esos comandos con todas sus opciones, manejándolos convenientemente en un terminal o fabricando scripts, con resultados realmente espectaculares.
A pesar de contar con un manual extenso y detallado, nos podemos perder si no lo conocemos bien o estamos buscando una solución determinada y no sabemos qué aplicar.
Personalmente lo prefiero a Gimp para realizar determinados trabajos, es mucho más rápido y eficiente.
A lo largo de varios minitutoriales voy a ir desgranando algunos apuntes y ejemplos prácticos que siempre me han ido de maravilla en mis trabajos.
Por adelantar lo que se puede hacer con ImageMagick:
-Conversor por lotes (convertir entre formatos, algunas imágenes o directorios completos)
-Redimensionado por lotes.
-Marcas de agua.
-Menu de DVD.
-Efectos especiales, a imagen fija o realizando animaciones.
-Añadir texto a imágenes.
...y un etcétera muy largo
En unos días iré publicando ejemplos muy vistosos y prácticos, ya veréis cómo os resulta de gran ayuda.
Si queréis ir investigando, el sitio de ImageMagick es:
http://www.imagemagick.org/script/index.php

4 abr 2011

Bienvenidos

Este va a ser un espacio donde se resuelvan los diferentes aspectos que suscita esa típica pregunta que me vienen haciendo desde hace tiempo:
¿Y eso se puede hacer en Linux?

Se agradecerán comentarios y sugerencias, siempre en tono respetuoso y educado.

Está recien cocido, así que paciencia que poco a poco lo iré llenando de contenido. Ya pensaré si lo divido por categorías (Multimedia, Diseño, Redes..etc)

Bienvenidos a este, vuestro espacio.

Si tenéis alguna sugerencia o queréis aportar algo enviar a:
pepebaezac@gmail.com

Pepe