RE:escanear imágenes con WIA 1.0
1. Imports WIALib
2. Imports System.Runtime.InteropServices
3.
4. Public Class ScannerClass
5. Dim WithEvents WiaManager As WiaClass
6. Dim WiaDevs As CollectionClass
7. Dim WiaRoot As ItemClass
8. Dim WiaPics As CollectionClass
9. Dim WiaItem As ItemClass
10.
11. Dim sTempFile As String
12.
13. Public Event ScanComplete(ByVal sender As Object, ByVal e As ScanEventArgs)
14.
15. Public Function ScanSync() As Bitmap
16. Dim WiaObj As Object
17. Dim SelectUsingUI As Object
18.
19. Dim ST As IO.Stream
20.
21. Dim B As Bitmap
22.
23. WiaManager = New WiaClass()
24. WiaDevs = WiaManager.Devices
25.
26. If WiaDevs Is Nothing Or WiaDevs.Count = 0 Then
27. Exit Function
28. End If
29.
30. WiaRoot = WiaManager.Create(SelectUsingUI)
31. WiaPics = WiaRoot.GetItemsFromUI(WiaFlag.SingleImage, WiaIntent.ImageTypeColor)
32.
33. If WiaPics Is Nothing Then Exit Function
34.
35. For Each WiaObj In WiaPics
36. WiaItem = Marshal.CreateWrapperOfType(WiaObj, GetType(ItemClass))
37. sTempFile = IO.Path.GetTempFileName
38. WiaItem.Transfer(sTempFile, False)
39. ST = IO.File.Open(sTempFile, IO.FileMode.Open)
40. B = Bitmap.FromStream(ST)
41. ST.Close()
42. If IO.File.Exists(sTempFile) Then IO.File.Delete(sTempFile)
43. Marshal.ReleaseComObject(WiaObj)
44. Exit For
45. Next
46.
47. 'WiaObj = Nothing
48. SelectUsingUI = Nothing
49.
50. ST = Nothing
51.
52. Return B
53. End Function
54.
55. Public Sub ScanAsync()
56.
57. Dim WiaObj As Object
58. Dim SelectUsingUI As Object
59.
60.
61. WiaManager = New WiaClass()
62. WiaDevs = WiaManager.Devices
63.
64. If WiaDevs Is Nothing Or WiaDevs.Count = 0 Then
65. Exit Sub
66. End If
67.
68. WiaRoot = WiaManager.Create(SelectUsingUI)
69. WiaPics = WiaRoot.GetItemsFromUI(WiaFlag.SingleImage, WiaIntent.ImageTypeColor)
70.
71. If WiaPics Is Nothing Then Exit Sub
72.
73. For Each WiaObj In WiaPics
74. WiaItem = Marshal.CreateWrapperOfType(WiaObj, GetType(ItemClass))
75. sTempFile = IO.Path.GetTempFileName
76. WiaItem.Transfer(sTempFile, True)
77. Exit For
78. Next
79.
80. WiaObj = Nothing
81. SelectUsingUI = Nothing
82.
83. End Sub
84.
85. Private Sub WiaManager_OnTransferComplete(ByVal Item As WIALib.Item, ByVal Path As String) Handles WiaManager.OnTransferComplete
86. Dim ST As IO.Stream
87. Dim B As Bitmap
88.
89. ST = IO.File.Open(sTempFile, IO.FileMode.Open)
90. B = Bitmap.FromStream(ST)
91. ST.Close()
92. ST = Nothing
93.
94. If IO.File.Exists(sTempFile) Then IO.File.Delete(sTempFile)
95. Marshal.ReleaseComObject(Item)
96.
97. RaiseEvent ScanComplete(Me, New ScanEventArgs(B))
98.
99.
100. End Sub
101.
102. End Class
103. Public Class ScanEventArgs
104. Inherits EventArgs
105.
106. Dim MyImage As Bitmap
107.
108. Public ReadOnly Property Image() As Bitmap
109. Get
110. Return MyImage
111. End Get
112. End Property
113.
114. Public Sub New(ByVal Img As Bitmap)
115. MyImage = Img
116.
117. End Sub
118. End Class