Añadiendo un titulo a una imágen con Imagemagick
Imagen original
Imagen trás aplicar el titulo
Últimamente ando trasteando bastante con las funciones de Imagemagick. Tiene diversas utilidades que permiten la transformación de imágenes desde la linea de comandos. Todo esto claro que se puede hacer con un entorno grafico como Gimp o mediante aplicaciones de procesamiento por lotes, pero a mi me gusta automatizar estas tareas para luego por ejemplo usar estos scripts directamente desde nautilus. Este script que proporciono no es un nautilus script propiamente dicho (habria por ejemplo que abrir una ventana de dialogo con zenity que te preguntara el texto a añadir), pero puede servir de base o como ejemplo.
Lo que hace es obtener las dimensiones de la imagen original, y despues crea un rectangulo negro y una linea blanca sobre la imagen a la par que añade el texto que le indiquemos.
Codigo:
#!/bin/bash
TEXTO()
{
#La imagen
IMAGEN="$1"
#El texto que le quiero añadir
TEXTO="$2"
#Recupero dimensiones imagen
DIMENSIONES=`identify -format "%wx%h" $IMAGEN`
echo "Dimensiones: $DIMENSIONES"
x=`echo $DIMENSIONES | awk -F"x" '{print $1}'`
y=`echo $DIMENSIONES | awk -F"x" '{print $2}'`
echo $x
echo $y
# el limite sera el tamaño de y menos 30
lim=$(($y-30))
# y ya utilizo convert para generar la nueva imagen añadiendo un rectangulo negro, una linea blanca y el texto
convert "$IMAGEN" -gravity SouthEast -font helvetica -pointsize 20 -fill black -draw "rectangle 0,$lim $x,$y" -fill white -draw "line 0,$lim $x,$lim" -draw "text 13 1 \"$TEXTO\"" ${IMAGEN}_texto.jpg
}
#Ejemplo:
TEXTO "abandono-de-persona.jpg" "abandono de persona"
Nota: Logicamente para que funcione, tienes que tener instalado “imagemagick” en tu sistema:
$ sudo aptitude install imagemagick
Ubuntu Multimedia para Ubuntu 10.04 y 10.10
Ya publique ésta referencia hace unas semanas, y ahora el script se actualiza para la version 10.10.
Con este script se añade el repositorio Medibuntu y podrás instalar:
-Java Support
-Flash Player Plugin
-Gstreamer Codecs
-w32codecs/w64codecs(It depends on your architecture and/or on the script you use)
-Non-free extra codecs
-MS Silverlight Support(Moonlight)
-ffmpeg and mplayer(Blue Ray support)(TESTING)
-Vlc and Gimp(Respectively the best video/audio player and best image editor)
-libdvdcss2 Package which let you watch encrypted DVDs
Descarga | Gnome-Look
Convertir un fichero de formato DOS a formato UNIX
Convertir de formato DOS a UNIX
dos2unix myfile.txt
Convertir de formato UNIX a DOS
unix2dos myfile.txt
Convertir de DOS a UNIX usando el comando “tr”
tr -d '\r' < input.file > output.file
Convertir de DOS a UNIX usando perl:
perl -pi -e 's/\r\n/\n/g' input.file
Convertir de UNIX a DOS usando “sed”:
sed 's/$'"/`echo \\\r`/" input.txt > output.txt
Convertir DOS nuevas lineas (CR/LF) a UNIX usando sed:
sed 's/^M$//' input.txt > output.txt
Visto en | Linux Toys
Es la hora de las tort… tips, digo tips… (1)
Aqui algunos tips:
Top de procesos por memoria:
ps aux | sort -nk +4 | tail
Ah!! Sorpresa!!!
telnet towel.blinkenlights.nl
Descubrelo tu mismo:
tr -c "[:digit:]" " " < /dev/urandom | dd cbs=$COLUMNS conv=unblock | GREP_COLOR="1;32" grep --color "[^ ]"
(Control+C para terminar)
Google translate
translate(){ wget -qO- "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=$1&langpair=$2|${3:-en}" | sed 's/.*"translatedText":"\([^"]*\)".*}/\1\n/'; }
Arbol de subdirectorios
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
Imprime la linea especificada de un fichero:
sed -n 5p fichero
listado de comandos que mas usas:
history | awk '{print $2}' | sort | uniq -c | sort -rn | head
Iniciar un comando en 1 sola cpu core:
taskset -c 0 your_command
twitear desde consola:
curl -u user:pass -d status="Tweeting from the shell" http://twitter.com/statuses/update.xml
Podeis encontrar mas en http://www.commandlinefu.com, y si el post tiene exito ire publicando alguno más.
¿Y los tuyos?, si tienes algun tip, truco, algo que quieras contar….ahora es el momento adecuado para hacerlo….
Script: Acortador de URLs mediante API de Google
googl() { curl -s -d "url=${1}" goo.gl/api/url | sed -n "s/.*:\"\([^\"]*\).*/\1\n/p"; }
Ejemplo:
gogl "http://ubuntulife.wordpress.com" devuelve:
http://goo.gl/Ksh5
Via Plurk | (Gracias a Angelito)
Script para desactivar el TouchPad
Me comenta Francesc que publique este script, su funcionalidad es desactivar el touchpad de un ordenador portatil cuando detecta que hay un mouse o pulsando la combinación de teclas Alt+t (por desgracia no he podido probarlo, si detectais algún problema comentadlo en los comentarios, valga la redundancia).
#!/bin/bash #El script MANUAL se encarga de desactivar y activar el touchpad cuando se presiona la combinacion seleccionada #El script AUTO se encarga de revisar si hay algun raton conectado, y si es asi, desactiva el touchpad gconftool-2 --type boolean --set /desktop/gnome/peripherals/touchpad/touchpad_auto-disable true echo "Generando los scripts" MANUAL=touchpad-manual AUTO=touchpad-auto zenity --question --text="¿Desea activar las notificaciones?\nSe instalara el paquete libnotify-bin\npara lanzar notificaciones a traves de Notify-OSD" if [ $? = 0 ];then gksu echo Instalando sudo apt-get install libnotify-bin gconftool-2 --type boolean --set /desktop/gnome/peripherals/touchpad/touchpad_notify true else gconftool-2 --type boolean --set /desktop/gnome/peripherals/touchpad/touchpad_notify false fi echo '#!/bin/bash gconftool-2 --type boolean --set /desktop/gnome/peripherals/touchpad/touchpad_auto-disable false #Si el estado actual es activado, lo desactiva, si no, lo activa if [ $(gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_enabled) = true ]; then gconftool-2 --type boolean --set /desktop/gnome/peripherals/touchpad/touchpad_enabled false #synclient TouchpadOff=1 if [ $(gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_notify) = true ]; then notify-send --icon=mouse "Touchpad Deshabilitado" fi else gconftool-2 --type boolean --set /desktop/gnome/peripherals/touchpad/touchpad_enabled true #synclient TouchpadOff=0 if [ $(gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_notify) = true ]; then notify-send --icon=mouse "Touchpad Habilitado" fi fi' | tee $MANUAL echo '#! /bin/bash # Depende de libnotify-bin notify=0 # Deshabilita la notificacion en el arranque # Sincroniza synclient con gconf #if [ $(gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_enabled) = true ]; then # synclient TouchpadOff=0 #elif [ $(gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_enabled) = false ]; then # synclient TouchpadOff=1 #fi while [ 1 ] do if [ $(gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_auto-disable) = true ]; then if [ $(gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_enabled) = true ] && [ -e /dev/input/by-id/*event-mouse ]; then # Se enchufa un Ratón gconftool-2 --type boolean --set /desktop/gnome/peripherals/touchpad/touchpad_enabled false #synclient TouchpadOff=1 if [ $notify = 1 ]; then notify-send --icon=mouse "Touchpad Deshabilitado" "Se ha detectado un Ratón externo" fi elif [ $(gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_enabled) = false ] && [ ! -e /dev/input/by-id/*event-mouse ]; then # Se desenchufa un Ratón gconftool-2 --type boolean --set /desktop/gnome/peripherals/touchpad/touchpad_enabled true #synclient TouchpadOff=0 if [ $notify = 1 ]; then notify-send --icon=mouse "Touchpad Habilitado" "Se ha desconectado el Ratón externo" fi fi fi if [ $(gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_notify) = true ]; then notify=1 fi sleep 5 # Periodo de refresco en segundos done' | tee $AUTO echo "Instalando los script" gksu cp $MANUAL /usr/bin/ rm $MANUAL sudo cp $AUTO /usr/bin/ rm $AUTO cd /usr/bin/ sudo chmod +rx $MANUAL sudo chmod +rx $AUTO echo "Asociando combinacion de teclas Alt+t" gconftool-2 -t str --set /apps/metacity/global_keybindings/run_command_8 "<Alt>t" gconftool-2 -t str --set /apps/metacity/keybinding_commands/command_8 "$MANUAL" echo "Asociando combinacion de teclas Alt+a para el modo automático" gconftool-2 -t str --set /apps/metacity/global_keybindings/run_command_7 "<Alt>a" gconftool-2 -t str --set /apps/metacity/keybinding_commands/command_7 "gconftool-2 --type boolean --set /desktop/gnome/peripherals/touchpad/touchpad_auto-disable true" echo "Creando autoarranque" cd /usr/share/gnome/autostart/ echo '[Desktop Entry]' | sudo tee $AUTO.desktop echo 'Type=Application' | sudo tee -a $AUTO.desktop echo 'Name=AutoDeshabilitar Touchpad' | sudo tee -a $AUTO.desktop echo "Exec=$AUTO" | sudo tee -a $AUTO.desktop echo 'Icon=mouse' | sudo tee -a $AUTO.desktop echo 'Comment=Detecta si exixte un raton, y si es asi, deshabilita el touchpad' | sudo tee -a $AUTO.desktop echo "Listo"
Funcionamiento:
*Modo automático: se desactiva el touchpad al detectar un ratón externo.
*Modo manual: al pulsar Alt+t se cambia a modo manual, y se activa o desactiva el touchpad (Alt+a para volver a modo automático).
Notas:
Si tienes activado compiz, debes activar el pluguin Comandos
En Karmic es incompatible con Deshabilitar touchpad cuando se escribe
Download | Ubuntu Leon
Crear un calendario a partir de una imágen
El truco anterior y la salida del comando “cal” que muestra el calendario del año especificado:
$ cal 2010
Me ha permitido jugar con la composición de imágenes generadas y he creado un script que a partir de una imágen te superpone un calendario encima de la misma. El script tiene algunos valores que puedes modificar para generar calendarios diferentes (tamaño de la fuente de texto, dimensiones de la imágen a generar, color del fondo, nivel de transparencia). Pero si no se cambia ningún valor, se crea un calendario por defecto como el de la primera imágen.
Nota: require de imagemagick instalado. Y darle permisos de ejecución (chmod +x ./calendario.sh)
Para usarlo: Ejecuta ./calendario.sh "nombre_de_la_imagen_a_usar"
Por ejemplo:
./calendario.sh "gato.png"
#!/bin/bash
#===========================================
# calendario.sh
# Crea un calendario a partir de una imagen
#===========================================
IMAGEN=$1
if [ -z $IMAGEN ];
then
echo "Debes indicar una imagen para crear el calendario"
exit;
fi;
# Edita estos valores, como desees:
# Fuente a utilizar, ojo no todas estan soportadas por imagemagick, usa por ejemplo Courier
#FUENTE="/usr/share/fonts/truetype/ttf-droid/DroidSans.ttf"
FUENTE="Courier"
# Tamaño de la fuente
SIZE=14
#Color de fondo (por lo general es black)
COLOR=gray
# % de Opacidad, transparencia
OPACIDAD=55
# Dimensiones del calendario
DIMENSIONS=600x600
BOLD=0
# Crear el calendario
# Creamos las imagenes del calendario 2010 (1 con transparencia y otra con fondo oscuro)
cal -h 2010 | convert -background transparent -fill white -font $FUENTE -pointsize 12 -strokewidth $BOLD -stroke white -gravity center label:@- calendario2010t.png
cal -h 2010 | convert -background $COLOR -fill black -font $FUENTE -pointsize 12 -strokewidth $BOLD -stroke white -gravity center label:@- calendario2010.png
# Redimensionamos la imagen original
cp $IMAGEN input.png
# Y le aplicamos el primer calendario con cierto grado de opacidad
convert input.png -resize ${DIMENSIONS}! miff:- | composite -dissolve $OPACIDAD% -gravity center calendario2010.png - micalendario.png
# a la composicion resultante le aplicamos ya el otro calendario sin trasnparencias
composite -gravity center calendario2010t.png micalendario.png micalendario.png
# Borramos lo sobrante
rm calendario2010t.png
rm calendario2010.png
rm input.png
exit;
# Si quisieramos crear la marca de agua seria parecido a esto:
#echo "(c) 2010 Ubuntu Life" | convert -background transparent -fill white -pointsize 24 label:@- watermark.png
#convert input.jpg -resize 500x500 miff:- | composite -watermark 30% -gravity center watermark.png - output.png
#convert input.jpg -resize 500x500 miff:- | composite -dissolve 40% -gravity center watermark.png - output.png
DVD Cover Nautilus Script 1.0
DVD Cover es un script para Nautilus que he implementado para generar caratulas de DVD de una o un grupo de imágenes. Soy un gran aficionado al cine y me gusta tener mis peliculas organizadas por carpetas y cada carpeta decorada con el icono de la caratula correspondiente. Asi que he desarrollado este script que a partir de una imágen con la caratula, aplica una mascara y genera una caratula de DVD con la imágen seleccionada como portada.
El script está basado en Caratulas, pero en mi caso no descargo ninguna caratula de ningun servicio online de internet, si no que partes ya de la imagen o grupo de imagenes seleccionadas. Además genero otro tipo de caratula de DVD diferente, basada en éstas plantillas.
Para que funcione, tienes que tener instalado: lib-notify (opcional, es para mostrar notificaciones de finalización), zenity e imagimagick (sudo aptitude install zenity imagimagick).
Despues copias el contenido de la carpeta descomprimida a $HOME/.gnome2/nautilus-scripts y ya deberia aparecerte una opción “Crear caratula de DVD” desde el menu de Nautilus. Basta con que selecciones la imágen o grupo de imágenes deseadas y hagas click derecho. Las imagenes de caratulas de DVD se generan en el mismo directorio y con sufijo “_dvdcover.png”.
Esta primera versión 1.0 únicamente genera caratulas a partir de las imágenes seleccionadas.
En la próxima versión entregare otro script que recorrera recursivamente la ruta que le indiques (p.ej $HOME/Peliculas) e ira creando caratulas de manera dinamica con las imágenes que encuentre y asignandoselas directamente a la carpeta como icono por defecto.
Descarga | Gnome-Look
Tip: Organizar de manera automática el Escritorio
El orden, ah! mantener de manera ordenada el escritorio, soy un completo desastre en este aspecto. Descargo muchos ficheros, se van acumulando y luego pierdo mucho tiempo organizandolos en carpetas. Hace tiempo se me ocurrio organizar algo más el escritorio creando un wallpaper dinamico. Pero ahora se me ha ocurrido algo mejor, usando un script muy sencillo en bash y una tarea programada mediante cron. Veamos un ejemplo en el caso de los ficheros PDF y es que últimamente voy generando muchos. Todas mis descargas desde el navegador las hago por defecto sobre el escritorio, por que no programar por ejemplo un script que me mueva mis ficheros .pdf localizados en el Escritorio a mi carpeta “Documentos”. Y eso mismo es lo que vamos a hacer con un script en cron que se ejecute cada minuto y que de manera automatica mueva todos los ficheros .pdf del Escritorio a la carpeta “Documentos”. Así me dara igual ir descargando 10,20, 30 o mil ficheros pdf que de manera automática se iran almacenando en la carpeta correspondiente. Aqui dejo el contenido del script, editalo como veas necesario:
#!/bin/bash #------------------------------------------------------------------------------------------- # Script para ejecutar por CRON cada 1 min, para mover los archivos PDF del escritorio a mi # carpeta de documentos #------------------------------------------------------------------------------------------- # Siendo como soy un desastre, en busca del orden... # Nota: podria hacerse lo mismo para imagenes, flv, mp3, avi, iso etc... ORIGEN="$HOME/Escritorio" DESTINO="$HOME/Documentos" # Mueve todos los ficheros PDF al Destino mv $ORIGEN/*.pdf $DESTINO # # Guardo el script en /usr/bin/Mueve.sh # Le doy permisos de ejecucion: # chmod +x Mueve.sh # # y programo esta entrada del cron: # # crontab -e # */1 * * * * /usr/bin/Mueve.sh # # Para que cada minuto ejecute el script y me mueva los ficheros .pdf descargados desde # el Escritorio #
El script es muy sencillo, solamente hace un mover (mv $HOME/*.pdf a $HOME/Documentos), alguien podria currarse un script más completo que almacenara en carpetas por fecha por ejemplo, A mi en principio me vale guardando todo en “Documentos” del directorio HOME.
Guarda este script como Mueve.sh (o el nombre que quieras) y dale permisos de ejecucion:
$ sudo chmod +x Mueve.sh
Entonces lo mueves a la carpeta /usr/bin para que este accesible a traves del path:
$ sudo mv Mueve.sh /usr/bin
Crea entonces una programación mediante cron, para ello ejecuta:
$ crontab -e
y escribe una linea tal como:
*/1 * * * * /usr/bin/Mueve.sh
Esta linea lo que hace es ejecutar cada minuto el script “Mueve.sh” o en definitiva mover todos los ficheros que actualmente existan en el Escritorio a la carpeta “Documentos”.
El ejemplo es sólo para ficheros con extensión PDF pero se podria ampliar fácilmente para que te moviera otro tipo de archivos. P.ej:
- imagenes (.jpg, .gif, etc…) a $HOME/Imagenes
- musica (.mp3) a $HOME/Música
- videos (.avi, .flv) a $HOME/Videos
ya depende del uso que quiera darle cada uno. Ventajas de Linux…
Video Wallpaper Nautilus Script
Como a veces me gusta usar un video como fondo de pantalla (pero nunca recuerdo los parametros de xwinwrap) he decidido crearme un script para Nautilus que te permite seleccionar un fichero con extension .mkv, .avi o .wmv del disco duro y utilizarlo como fondo de pantalla.
Requisitos: tienes que tener instalado zenity (para crear el cuadro de dialogo de selección de archivos), mplayer (para reproducir el video) y xwinwrap (para poder usar el video como fondo de pantalla). Los dos primeros si no los tienes instalados los instalas con:
$ sudo aptitude install mplayer zenity
El tercero puedes descargarlo e instalarlo como paquete .deb (hay para 32 y 64 bits) desde el siguiente enlace.
Para usar mi script (espero que no de problemas), te lo descargas de Gnome-Look (el enlace anterior) y lo dejas en tu directorio ~/.gnome2/nautilus-scripts, le das permisos de ejecución:
$ chmod +x "Video Wallpaper"
Y ya debe aparecerte la entrada “Video Wallpaper” en el menu de Nautilus > Scripts
Al pulsar sobre la entrada, se abrira una ventana que te permite seleccionar un archivo con formato .avi, .wmw o .mkv y de manera automatica se usara este fichero como fondo de pantalla. Si quieres parar el proceso basta con volver a abrirl la ventana de selección de archivos pero no elegir ninguno, pulsas sobre el boton Cancelar y el video que estuviera reproduciendose se parara y te dejara otra vez el fondo de escritorio normal.
No se si dara algun problema, a mi me va perfecto, bajo Lucid / Ubuntu 10.04
Y si no quereis usar ninguna pelicula, podeis tambien encontrar muchos, preparados y variados videos-fondo en DreamScene.








