
Como escanear una imagen directamente de un escaner cualquiera
Publicado por Carlos (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:
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.
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


0