Inicio > Scripts Nautilus, Software > Script de Enmarcar y titular una imagen para Nautilus

Script de Enmarcar y titular una imagen para Nautilus

Jueves, 12 noviembre 2009 Deja un comentario Go to comments

Hola,

desde que soy aficionado a la fotografía digital, una de las cosas que hago es enmarcar y titular las fotos que hago. Hasta ahora lo hacía mediante un script en el Gimp que era valido para ir de una en una pero no si necesitaba hacerlo con varias.

Para ello programé un pequeño script de Nautilus que me permita seleccionar varias imagenes y añadirle el marco y un título a todas.

Requisitos del script:

  • Zenity
  • Imagemagick

Para el funcionamiento del script hay que copiarlo dentro del Home del usuario a la carpeta /.gnome2/nautilus-scripts y darle permisos de ejecución.  Ahora ya nos aparece en le menú contextual de Nautilus.

snapshot8

El script crea un borde blanco muy fino alrededor de la imagen y después un borde negro más grueso para enmarcar la imagen. Si solo quieres añadir el borde, hay que dejar en blanco el texto a añadir.

Para añadir el texto se usa la fuente Bitstream-vera por lo que es necesario tenerla instalada, aunque el usuario puede modificar el script para cambiarla. Tambien es necesario tener instalado los paquetes Zenity y Imagemagik.

El script crea una copia con el borde y título de la imagen original para evitar sobreescribirla.

Imagen original.

earth-horizon

Imagen con el borde y título añadido por el script.

tm_earth-horizon

Descargar script

Código fuente del script:


#!/bin/bash

#******************************************************************************************
#
# ENMARCAR Y TITULAR
# Versión= 1.0
#
# Script de Nautilus que añade un borde negro exterior grueso y un borde blanco fino
# a una imagen y en ese borde añade un título

# Script programado y probado satisfactoriamente en Debian Lenny y Gnome 2.22.3
# Esta programado pensado en ejecutarse como un script de Nautilus aunque es posible
# usarlo en consola pasandole como parámetro el nombre del fichero de la imagen.

#  DEPENDENCIAS
#
#  Zenity (http://freshmeat.net/projects/zenity)
#  Necesario para generar los cuadros de dialogo del script
#
#  Imagemagick (http://www.imagemagick.org/)
#  Contiene los programas convert y identify necesarios para crear el borde

# INSTALACION:
#     1. Copiar el script al directorio /home/usuario/.gnome2/nautilus-scripts
#    2. Dar permisos de ejecución al script
#    3. En este momento al pulsar con el botón derecho del ratón sobre una imagen nos
#       aparece el menú Scripts y dentro de el aparece el script Enmarcar y titular.

# Copyright (C) 2009 Carlos Fco. Andión López

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

# http://www.gnu.org/copyleft/gpl.html

#******************************************************************************************

# Se comprueba que los programas necesarios para generar el borde estan presentes
for command in convert identify
do
 if [ ! $(which $command) ]
then
 zenity --error --text "Falta el programa "$command" .n
 Es necesario instalar el paquete ImageMagick."
 exit 1
 fi
done

#Fuente usada para etiquetar la imagen, si no existe en el sistema se cierra el script
#Se puede modificar la fuente según las preferencias del usuario
FONT_TYPE="/usr/share/fonts/truetype/ttf-bitstream-vera/Vera.ttf"

if [ ! -f $FONT_TYPE ]; then
 zenity --info --text="Falta la fuente $FONT_TYPE.n
 Es necesario instalarla en el sistema"
 exit 1
fi

#Pantalla de dialogo de introduccion del texto que vamos usar para firmar la imagen y tamaño de fuente
#y los tamaños de los bordes internos y externos
IMX_TXT=`zenity --title='Marco y título' --text='¿Título?'  --entry-text=$TEXT --entry`
FONT_SIZE=`zenity --title='Marco y título' --text='¿Tamaño del título?' --entry-text='20' --entry`
BORDER_IN_SIZE=`zenity --title='Marco y título' --text='¿Tamaño borde interior?
Valores recomendados entre 1-5'  --entry-text='3' --entry`
BORDER_OUT_SIZE=`zenity --title='Marco y título' --text='¿Tamaño borde exterior?
Valores recomendados entre 1 y 10' --entry-text='6' --entry`

#Se inicializa la barra de progreso de zenity
FILES_COUNT="$#"
CURRENT_FILE=1

for arg;
 do
 #Se renombra el archivo para evitar sobreescribir el original y crear uno nuevo con el borde
 IMX_FILE_TARGET='tm_'"$arg"

 #Calculamos las dimensiones de la imagen original
 IMX_WIDTH=`identify -format "%w" "$arg"`
 IMX_HEIGHT=`identify -format "%h" "$arg"`

 #Calculamos el tamaño de los bordes interno e externo teniendo en cuenta la orientación de la imagen.
 #El tamaño de los bordes es un % sobre el tamaño de la imagen.El borde interior se calcula para que sea
 #más fino que el exterior
 BORDER_SIZE=$IMX_WIDTH
 if [ $IMX_HEIGHT -gt $IMX_WIDTH ]; then
 BORDER_SIZE=$IMX_HEIGHT
 fi
 BORDER_IN=$(($BORDER_SIZE * $BORDER_IN_SIZE / 1000 ))
 BORDER_OUT=$(($BORDER_SIZE * $BORDER_OUT_SIZE / 100 ))

 #Añadimos el borde interno y externo a la imagen
 convert "$arg" -bordercolor white -border $BORDER_IN "$IMX_FILE_TARGET"
 convert "$IMX_FILE_TARGET" -bordercolor black -border $BORDER_OUT "$IMX_FILE_TARGET"

 #Calculamos las dimensiones de la imagen con los bordes añadidos
 IMX_WIDTH_TARGET=`identify -format "%w" "$IMX_FILE_TARGET"`
 IMX_HEIGHT_TARGET=`identify -format "%h" "$IMX_FILE_TARGET"`

 #Calculamos la posición  X,Y para añadir el texto en la parte inferior izquierda
 X=$(($IMX_WIDTH_TARGET - $BORDER_IN - $BORDER_OUT - $IMX_WIDTH ))
 Y=$(($IMX_HEIGHT_TARGET - $BORDER_OUT/2 + - $BORDER_IN  ))

 #Añadimos el texto en el borde creado
 convert "$IMX_FILE_TARGET" -font $FONT_TYPE -fill "#FFFFFF" -pointsize $FONT_SIZE -stroke "#FFFFFF" -draw "text `echo $X`,`echo  $Y`  '$IMX_TXT'" "$IMX_FILE_TARGET"

 #Actualizo la barra de progreso de Zenity
 percentage=$(echo "$CURRENT_FILE * 100 / $FILES_COUNT" | bc)
 CURRENT_FILE=$((CURRENT_FILE + 1))
 echo $percentage

done | zenity --progress --title="Procesando imagenes"  --auto-close
Anuncios
Categorías:Scripts Nautilus, Software Etiquetas: ,
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: