Cultura Digital#Blog » Versión Imprimible

http://blog.culturadigital.org

Escanea imágenes con scanimage desde consola#Linux

Publicado el Sábado, 12 de Enero de 2008 @ 13:29 CET +0100

Desde que empecé a usar Linux y en concreto Ubuntu no había tenido demasiada necesidad de usar la impresora pero tampoco quería complicarme la vida con compilaciones de drivers que seguro tenía que hacer.

Luego desde Feisty comprobé que la impresora funcionaba bien aunque no el escáner… pero como decía no me hacía falta.
Así llegó Gutsy y hace poco, en concreto ayer, necesitaba usar el escáner ya que los cartuchos de tinta de mi Epson CX5400 están secos. Es lo que pasa con algunas impresoras: mucha gente las tira si no le funcionan pero la gran mayoría de impresoras domésticas son multifunción y estás tirando: una impresora, un escáner y un lector de tarjetas como poco.

Aún teniendo en cuenta que comprando los cartuchos (algo difíciles de conseguir, al menos en Jaén) puedo volver a tener impresora, el escáner era casi de vital importancia para mí casi más que ésta misma. Así que decidí probarlo en Ubuntu con el programa Xsane.

Cuando volvía de Windows con la impresora cargada desde allí, Xsane imprimió correctamente dos imágenes y ya no quiso trabajar más, no encontraba el escáner.
Encontré mil mensajes sobre lo mismo: copiar el binario a descargar o del mismo CD de drivers de la impresora para decirle a XSane donde encontrarlo. El hecho es que Xsane no me iba pero el comando scanimage funcionaba a la perfección: reconocía la impresora, el escáner e imprimía… pero… cómo hacerlo desde consola????

Teniendo en cuenta que soy bastante Geek, sabía que imprimir, no a la salida estándar claro ^^, desde terminales es algo que se hace desde prácticamente que apareció internet. Es casi inherente a ella.
Leí la ayuda de scanimage e inicié mi búsqueda para ver como podría imprimir directamente desde consola (terminal), algo que me llamaba la atención sobremanera y que deseaba hacer enseguida. Trabajar desde consola me encanta evitando las posibles complicaciones y consumo de recursos de aplicaciones gráficas y asistentes.

Así, si Xsane no quería currar, scanimage lo haría directamente.
Lo primero, al ver la ayuda flipé: se podía hacer de todo!! :D así que busqué ejemplos y además, encontré algo que ya estaba pensando, un script de consola para automatizar el proceso [1]: ole y ole.

Así que sin más, miré lo fácil que era y me hice el mío propio ya con la cabeza no en ese script sino en como automatizarlo y personalizarlo aún más.
Me encanta Linux, me encanta trabajar con el terminal y me encanta que funcione tan bien :D

Script para imprimir desde consola o terminal en Linux (nota, escribe el dispositivo (-d) que aparezca en tu scanimage -L):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
read -p "Nombre del proyecto a escanear: " NOMBRE
read -p "Modo de escaneo (Gray | Color): " MODO
read -p "Valor de X: " X
read -p "Valor de X: " Y
read -p "Resolucion: " RESOLUCION
read -p "Tiempo entre escaneo (segundos): " SEGUNDOS
mkdir $NOMBRE
 
CONTADOR=0
N=1
 
while test $N != 0
do
 
scanimage -d epson:libusb:001:008 --mode $MODO -x $X -y $Y --format=pnm  --resolution $RESOLUCION > $NOMBRE/$NOMBRE$CONTADOR.pnm
echo $NOMBRE$CONTADOR
CONTADOR=`expr $CONTADOR \+ 1`
 
sleep $SEGUNDOS
echo -e "\a"
sleep 0.5s
echo -e "\a"
sleep 0.5s
echo -e "\a"
 
done

Podéis visitar el blog donde lo leí [1] para más información pero es un script bastante sencillo que:

Primero pide las variables que necesita sobre:
El nombre del proyecto, para crear las imágenes y un directorio para contenerlas.
El modo de escanaeo, color, gris y no recuerdo el otro ahora mismo.
Coordenadas de escaneo las cuales por defecto cogen toda el área de impresión de tu escáner (el estándar A4 son 210×297mm), o al menos las que establece el driver que usas y tu modelo de escáner.

Aunque el script pide las coordenadas del área de impresión, si se omiten usará las de por defecto así que si no te importa imprimir siempre todo el área lo mismo es recomendable eliminar ese parámetro y olvidar tener que meterlo siempre.

Además… si scanimage -L detecta bien tu dispositivo y solo tienes uno, puedes omitir también el parámetro dispositivo (-d) aunque no cuesta meterlo en el script y te aseguras un mejor funcionamiento. El comienzo del script podría quedar así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
read -p "Nombre del proyecto a escanear: " NOMBRE
read -p "Modo de escaneo (Gray | Color): " MODO
read -p "Resolucion: " RESOLUCION
read -p "Tiempo entre escaneo (segundos): " SEGUNDOS
mkdir $NOMBRE
 
CONTADOR=0
N=1
 
while test $N != 0
do
 
scanimage --mode $MODO -x 210 -y 297 --format=pnm  --resolution $RESOLUCION > $NOMBRE/$NOMBRE$CONTADOR.pnm
[...]

El comando cargando las opciones por defecto (formato pnm, eh?) es tan sencillo como:
scanimage >image.pnm

Además he añadido otra variable para la resolución o calidad de la imagen, por defecto son 100dpi pero para escanéo de mapas, como en este caso mío, quizá prefieras usar 1200 :mrgreen:

Luego estableces el número de segundos que esperará el bucle para iterar de nuevo sobre el comando.
Lo que haré luego será incluir otro ajuste para las iteraciones del comando, o lo que es lo mismo, el número de copias que quieres sacar… eso no se ha metido en el script pero solo es añadir una variable para el número máximo del iterador.

El script original escaneaba en png pero yo he preferido el formato pnm y ya modificarlo con Gimp o lo que sea a mi gusto.
Y muchas cosas más!

Scanimage te permite hacer todo lo que cualquier programa gráfico puede, las opciones son muchísimas y basta con le eches un ojo scanimage:
scanimage --help
Nota: Usa scanimage -L para listar tus dispositivos y -T para testear el programa ;)

Obviamente: Gracias a “Scripts in the shell”!! ;)
Más información en el proyecto Sane: http://www.sane-project.org/man/scanimage.1.html [2]

Artículo impreso desde Cultura Digital#Blog: http://blog.culturadigital.org
URL al artículo: http://blog.culturadigital.org/tecnologia/software/escanea-imagenes-con-scanimage-desde-consolalinux

URLs in this post:

[1] un script de consola para automatizar el proceso: http://scriptsintheshell.blogspot.com/2007/06/script-para-escanear-libros-sin.html

[2] http://www.sane-project.org/man/scanimage.1.html: http://www.sane-project.org/man/scanimage.1.html

Creative Commons License
Cultura Digital#Blog by J.A.Cobo aka Covi is licensed under a Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0 España License.
Permissions beyond the scope of this license may be available at http://blog.culturadigital.org.

Copyright © 2004-2009 Cultura Digital#Blog by J.A.Cobo. Some rights reserved.