Visual Basic.NET - Como escanear una imagen directamente de un escaner cualquiera

   
Vista:

Como escanear una imagen directamente de un escaner cualquiera

Publicado por Carlos carlosbermejor@hotmail.com (19 intervenciones) el 03/05/2013 11:58:47
Hola, buenas, gracias por visitar este sitio.

Agradeceria cualquier ayuda con este tema:

Quiero crear un metodo que al ejecutarse escanee una imagen de un escaner cualquiera.

Mas concretamente: Al ejecutarse el metodo enviara al escaner una orden de escanear una imagen de una forma concreta (por ejemplo, una imagen de 300dpi, en color, y que se guardara en la ruta C:\imagenesEscaneadas).

Premisas:
- Ya tengo un programa que controla cualquier escaner conectado al ordenador, PERO no escanea de esta manera, sino que abre la ventana de dialogo predeterminada del escaner en cuestion (por ejemplo si uso un escaner canon lid 25 me saldra la ventana de dialogo de canon (canScan)).
- Guarda la imagen escaneada en una ruta predefinida.

- IMPORTANTE: Para controlar los escaneres estoy usando la libreria de eztwain (que sirve para controlar casi cualquier dispositivo de escaneo, muy buena esta libreria).
- En un principio mi codigo deberia escanear de la forma que he propuesto, pero en vez de eso abre esta ventana de la que os hablo (la predeterminada de cada escaner).

Asi que he aqui la duda:
- ¿Se puede escanear una imagen directamente mediante codigo?
- ¿Sigo usando eztwain?¿No funcionan las ordenes directas por que en realidad tan solo sirve para abrir estas ventanas?
- ¿Hay alguna forma de hacer esto o algo parecido?

Para ayudar a comprender mi problema les doy el metodo que uso para escanear:



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
27
28
29
30
31
32
33
34
35
36
37
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
       'Yo lo hago desde un boton, los creadores de esta libreria asi lo recomiendan
        Dim fileName As String
        Dim i As Integer
        Dim N As Integer
        ' Change this to your value: en mi caso solo escaneo una imagen
        N = 1
        'las siguientes lineas supuestamente configuran el escaner para escanear de la forma que os comente (directa, sin usar la ventana predeterminada)
        Call EZTwain.LogFile(1)
        Call EZTwain.SetHideUI(False)
        Call EZTwain.SetFileAppendFlag(False)
        Call EZTwain.SetJpegQuality(75)
        If EZTwain.OpenDefaultSource() Then
            'Como veis aqui se le da al escaner los parametros determinados, como la resolucion de la            imagen etc.
            ''Call EZTwain.SetPixelType(2)
            ''Call EZTwain.SetResolution(400)
            ''Call EZTwain.SetAutoDeskew(1)
            ''Call EZTwain.SetLightPath(False)
            ''Call EZTwain.SetXferCount(N)
            ''Call EZTwain.SetRegion(0.0, 0.0, 101.0, 101.0)
            ''Call EZTwain.SetMultiTransfer(1)
 
            'en este for procedemos a escanear
            For i = 1 To N
                fileName = String.Format("c:\escaneadoProcbr\image{0}.tif", i)  'creacion del archivo tif en esa ruta
                ' If you can't get the handle of the active window, use 0:
                If EZTwain.AcquireToFilename(Me.Handle, fileName) <> 0 Then
                    Exit For
                End If
            Next i
            Call EZTwain.CloseSource()
        End If
        Dim caso As String
        If EZTwain.LastErrorCode() <> 0 Then
            Call EZTwain.ReportLastError("Unable to scan.")
        End If
    End Sub


Pues ese es el codigo, para cualquier duda sobre el avisadme por el foro o en mi correo (preferiblemente por el foro, para que todo el mundo tenga acceso a la informacion).


De antemano gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como escanear una imagen directamente de un escaner cualquiera

Publicado por Carlos (19 intervenciones) el 06/05/2013 20:34:31
Hola queridos compañeros del foro (y visitantes).

Tengo buenas noticias, consegui (tras mucho investigar, remover, y traducir (y enrrear como un bicho malo)) escanear de forma automatica, saltandome esa ventanita del escaner.

Vale, he realizado una depuracion AGRESIVA de mi metodo de escaneo, observad:



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
27
28
'------METHOD ESCANEARPRO------
Private Sub escanearPro(ByVal ruta1, ByVal ruta2, ByVal nombreArchivo, ByVal tamannoEscaneo)
'Al terminar el escaneo se generara un pdf, no un tif
Dim fileName As String 'nombre del archivo que generaremos
Dim N As Integer 'numero de escaneos seguidos que realizaremos, lo suyo es que sea 1, pero esto es a gusto del consumidor
N = 1
fileName = String.Format(rutaDondeSeGuardaraElArchivo + nombreArchivo + ".pdf", 1) 'ponemos la ruta, el nombre del archivo y el tipo de archivo (en este caso .pdf)
Call EZTwain.LogFile(1)
Call EZTwain.SetHideUI(1)
If EZTwain.OpenDefaultSource() Then
Call EZTwain.SelectFeeder(1) 'esta linea es la que define que es un escaner flatbed, para ponerlo ADF el 1 lo ponemos false (si no funciona ponganse en contacto conmigo)
Call EZTwain.SetPixelType(2) 'yo escaneo en color (provad con otros numeros para ver otros tipos de escaneo, como el blanco-negro)
Call EZTwain.SetBitDepth(1)
Call EZTwain.SetResolution(300) 'resolucion de la imagen
Call EZTwain.SetAutoScan(1) 'ESTA LINEA ES NUESTRA SALVADORA, ya que es la encargada de decirle al escaner que escanee y punto, sin mostrar ventanas adicionales ni nada, que escanee con los parametros que le hemos dado y ya esta
 
Call EZTwain.SetRegion(0, 0, 10.1, 10.1) 'area que decidimos escanear
 
 
 
 
EZTwain.AcquireToFilename(Me.Handle, fileName) 'esta linea realiza el escaneo y la creacion del documento
End If
If EZTwain.LastErrorCode() <> 0 Then
Call EZTwain.ReportLastError("Unable to scan.")
End If
 
End Sub



Como veis es mas cortito. Para cualquier duda escribidme en el foro (para que todo el mundo pueda beneficiarse de la solucion)

De todos modos gracias por visitar este foro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve

Como escanear una imagen directamente de un escaner cualquiera

Publicado por xve (88 intervenciones) el 06/05/2013 23:11:27
Hola Carlos, muchas gracias por comentarlo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como escanear una imagen directamente de un escaner cualquiera

Publicado por claudio (1 intervención) el 28/07/2013 17:42:10
hola Carlos, soy nuevo en vb.net y quisiera me ayudaras a iniciar eztwain para que me reconozca la función que tu compartiste con nosotros, debo importar eztwain.vb y crear una referencia, no se! me perdi

muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como escanear una imagen directamente de un escaner cualquiera

Publicado por manuel (1 intervención) el 08/03/2016 20:22:27
Me gustaría consultar si se puede escanear desde una pagina aspx, y enviar a guardar a una carpeta del servidor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar