Screenshot.sh

última actualización el 9 de marzo de 2009, 03:55 por Carlos-vialfa
Publicado por Carlos-vialfa

Captura de pantalla





Presentación


A continuación veremos un pequeño script basado en las herramientas de ImageMagic para realizar capturas de pantalla (completas o parciales), además para agregar un marco y una anotación (la fecha para ser más precisos)

Además pone en practica una utilidad llamada Xdialog (creación de ventanas de dialogo simples) que te da la posibilidad de configurar algunas variables del script.

Requerimientos



Nota: Bajo Gnomo, existe un equivalente a Xdialog llamado Zenity
También existe Kdialog bajo KDE.

Sintaxis


screenshot.sh [<setup>]

Uso


La primera vez, ejecuta el script con el parámetro “setup” para configurar el directorio de destino, el prefijo de tus capturas así como la extensión.

screenshot.sh setup


Una vez definidas las variables, podrás llamar el script desde la línea de comandos, o desde tu escritorio o desde la barra de tareas.

Una primera ventana de dialogo te informará que después de que la cierres tendrás un plazo de 3 segundos (puede ser configurado en el script) para elegir el escritorio en el que se va a hacer la captura.

Cuando aparezca el cursor de ImageMagic (en forma de cruz), haz clic en la ventana a capturar (o el escritorio) o dibuja un cuadrado o rectángulo (arrastrando el ratón manteniendo presionado el botón izquierdo de éste).

De este modo será creada una imagen y su doble con una anotación en el directorio definido durante el setup.

Podrás volver a definir la configuración en cualquier momento ejecutando nuevamente el “setup”. O modificando las variables manualmente.

Código fuente


#! /bin/bash

# @(#)
# @(#) screenshot 17/06/2007
# @(#) versión 0.1 - autor: JP
# @(#)
# @(#) screenshot es un pequeño programa de captura de pantalla basado en 
# @(#) ImageMagic y recurriendo a Xdialog
# @(#)
# @(#) uso: screenshot [< setup >]
# @(#)

### Function setup ###
function setup {

# Borrado de los valores antes de iniciar
sed -i '/^#A$/,/^#Z$/ s|^DIRECTORIO=.*| DIRECTORIO=|' $0
sed -i '/^#A$/,/^#Z$/ s|^NOM_IMAGEN=.*|NOM_IMAGEN=|' $0
sed -i '/^#A$/,/^#Z$/ s|^EXT=.*|EXT=|' $0

# Elección del directorio
DIRECTORIO=$(Xdialog --stdout --title "Directorio" --dselect "$HOME" 0 0)
#Recuperacion del codigo de retorno
RETVAL="$?"
# Test variable vacía. Si si, inicia con valor predeterminado
if [ -z "${DIRECTORIO}" ]
then DIRECTORIO="${HOME}/"
fi
# Test de código de retorno Xdialog (ver doc Xdialog para + info)
#+ Con un código igual a 0 se inicializa la variable DIRECTORIO con el valor proporcionado
#++ En todos los otros casos es inicializada con el valor predeterminado ($HOME)
case "$RETVAL" in
0)	sed -i "/^#A$/,/^#Z$/ s|DIRECTORIO=|&\"${DIRECTORIO}\"|" $0
	mkdir -p "$DIRECTORIO";;

*)	Xdialog --title "Anulación" --msgbox "\nEl directorio predeterminado \n\n$HOME\n\n\
	sera utilizado...\n" 10 50
	sed -i "/^#A$/,/^#Z$/ s|DIRECTORIO=|&\"$HOME/\"|" $0;;
esac

# Elección nombre
NOM_IMAGE=$(Xdialog --stdout --title "Nombre de la imagen" \
	--inputbox "Ingresa un nombre de referencia para las imagenes " 0 0)
RETVAL="$?"
if [ -z "${NOM_IMAGE}" ]
then NOM_IMAGE="capture"
fi
case "$RETVAL" in
0)	sed -i "/^#A$/,/^#Z$/ s/NOM_IMAGE=/&\"${NOM_IMAGE}\"/" $0;;

*)	Xdialog --title "Anulacion" --msgbox "\nEl nombre genérico predeterminado\n\ncapture\n\n\
	será utilizado...\n" 10 50
	sed -i "/^#A$/,/^#Z$/ s/NOM_IMAGE=/&\"capture\"/" $0;;
esac

# Eleccion de extension
Xdialog --no-tags --radiolist  "Type d'extension" 0 0 7 \
	".png" "png - Portable Network Graphic" on \
	".jpg" "jpg o jpeg - Joint Photographic Experts Group" off \
	".gif" "gif - Graphic Interchange Format" off \
	".bmp" "bmp - BitMaP" off \
	".tif" "tif o tiff - Tag(ged) Image File Format" off 2>/tmp/radiolist.tmp.$$
RETVAL=$?
EXT=$(cat /tmp/radiolist.tmp.$$)
rm -f /tmp/radiolist.tmp.$$

case $RETVAL in
0)	sed -i.4.bak "/^#A$/,/^#Z$/ s/EXT=/&\"${EXT}\"/" $0;;

*)	Xdialog --title "Anulacion" --msgbox "\nLa extension generica predeterminada\n\npng\n\n\
	sera utilizada...\n" 10 50
	sed -i.5.bak "/^#A$/,/^#Z$/ s/EXT=/&\"\.png\"/" $0;;
esac

Xdialog --title "Setup" --msgbox "\nLos siguientes parámetros de configuración han sido actualizados:\
	\n\nDIRECTORIO = ${DIRECTORIO}\
	\nNombre = ${NOMBRE_IMAGEN}\
	\nExtension = ${EXT}\
	\n\Nvuelva a ejecutar el script por favor...\
	\n\n" 0 0
# El setup ha terminado, salimos del script
exit
}

# Test de la existencia de un parametro (setup)
if [ -n "$1" ]
then
	case "$1" in
		setup)	setup # Parametro presente, se ejecuta la función
			;;

		*)	Xdialog --title "Error" --msgbox "\nEl script solo acepta un parametro\
			\nen option.\n\nUsage : screenshot < setup >\n" 0 0
			exit
			;;
	esac
fi

# Se elimina la funcion de la memoria
unset setup

### Declaracion de variables (despues de la ejecucion del setup)
#A
DIRECTORIO=
NOMBRE_IMAGEN=
EXT=
#Z

# Test de la existencia de un archivo conteniendo el valor de la variable ${NOMBRE_IMAGEN}
#+ Si la condicion es verdadera entonces se extrae el numero del contador
#++ para incremetar el contador ($COUNT) de un paso
if [ -e $(ls "${DIRECTORIO}" | egrep \b${NOMBRE_IMAGEN}) ]
then
NUM=$(ls ${DIRECTORIO} | egrep "\b${NOMBRE_IMAGEN}" | sed 's/[^0-9]*//g'| sort -nr | sed 1q)
COUNT=$(expr ${NUM} + 1)
fi

# Ventana de dialogo de ayuda al abrir - Facultativo -
/usr/bin/Xdialog 	--title "Screenshot"\
			--msgbox "Tienes 3 segundos despues de cerrar esta ventana\n\
			para elegir el escritorio, o la ventana a poner en primer plano\n\
			para hacer la captura de pantalla."\
			0 0

# Comando propiamente dicho para la captura, con un tiempo de latancia de 3 segundos
import -pausa 3 ${DIRECTORIO}${NOMBRE_IMAGEN}${COUNT}${EXT}


# Creación de un clon de la imagen e insertando un marco y una anotación exterior
#+ Espesor del marco / Color de fondo / Color del texto / tamaño del texto / Ubicación
#++ Label (aqui la fecha reformateada)/ Archivo original / Archivo de salida
montaje -frame 5 -mattecolor black -fill white -pointsize 14 -geometry +0+0 \
        -label "$(date '+%A %e %B %Y %H:%M:%S')" ${DIRECTORIO}${NOMBRE_IMAGEN}${COUNT}${EXT} ${DIRECTORIO}${NOMBRE_IMAGEN}_anotar${COUNT}${EXT}

Screeshots

  • Captura parcial

  • Captura parcial con anotación

  • Captura parcial

  • Captura parcial con anotación


Enlace de interés



PD: El artículo original fue escrito por jipicy, contribuidor de CommentCaMarche
Mejores respuestas para « Screenshot.sh » en :
Descargar Firmware de DVD-ROM de Samsung SH-D162C (TS-H352C) Ver Ahora tienes el firmware de DVD-ROM de Samsung SH-D162C (TS-H352C). Para Windows XP/2000/Me/98SE Descárgalo, es GRATIS. Guarda tu driver en una carpeta (crea una carpeta con nombre igual al modelo), para tenerlo siempre ubicado, cuando lo...
Ejecutar un script VerEjecución de un script Para poder ejecutar un script o un programa en línea de comandos existen varias posibilidades: 1. La ruta absoluta 2. La ruta relativa 3. Modificar la variable PATH En primer lugar convierte el script...
Captura de pantalla / Copia de pantalla VerNo se requiere un programa especial para hacer una captura de pantalla Cómo hacer una captura de pantalla Captura de pantalla completa PC bajo Windows En Mac Captura de una ventana PC bajo Windows En Mac PC bajo Linux Captura de una...
El firmware de la grabadora de DVD y CDROM VerEl firmware de la grabadora o reproductor de CDROM y DVD El firmware es un pequeño programa que controla las funciones de la grabadora (o del reproductor). Este se encuentra almacenado en un dispositivo que está dentro de la grabadora, el...
Linux - Shell VerIntroducción a la shell El intérprete de comandos es la interfaz entre el usuario y el sistema operativo. Por esta razón, se le da el nombre inglés "shell", que significa "caparazón". Por lo tanto, la shell actúa como un intermediario entre el...