Returns acquired image as byte array.
Visual Basic |
---|
Public Function AcquiredImages_GetImageAsByteArray( _ ByVal index As Long _ ) As Variant |
Private VSTwain1 As New VintaSoftTwain() ''' <summary> ''' Scans images asynchronously. ''' </summary> Private Sub ScanImages() ' open the device manager If Not VSTwain1.DeviceManager_Open() Then Console.WriteLine(VSTwain1.errorString) Exit Sub End If ' select device using standard device selection dialog VSTwain1.DeviceManager_ShowDefaultDeviceSelectionDialog() ' open the device If Not VSTwain1.Device_Open Then Console.WriteLine(VSTwain1.errorString) Exit Sub End If ' specify that device UI must be shown VSTwain1.Device_ShowUI = True ' subscribe to the device events AddHandler VSTwain1.DeviceImageAcquired, AddressOf VSTwain1_ImageAcquired AddHandler VSTwain1.DeviceScanCompleted, AddressOf VSTwain1_ScanCompleted AddHandler VSTwain1.DeviceScanFailed, AddressOf VSTwain1_ScanFailed AddHandler VSTwain1.DeviceScanCanceled, AddressOf VSTwain1_ScanCanceled ' acquire images asynchronously VSTwain1.Device_AcquireImage() End Sub Private Sub VSTwain1_ImageAcquired() ' get index of acquired image Dim imageIndex As Integer = VSTwain1.AcquiredImages_Count - 1 'Dim arrPixels() As Byte ' VB 6.0 syntax Dim arrPixels(,,) As Byte ' VB.NET syntax Dim x As Long, y As Long, width As Long, height As Long ' get the first image from the buffer arrPixels = VSTwain1.AcquiredImages_GetImageAsByteArray(imageIndex) If VSTwain1.Error Then Console.WriteLine(VSTwain1.errorString) Else width = UBound(arrPixels, 2) - LBound(arrPixels, 2) height = UBound(arrPixels, 3) - LBound(arrPixels, 3) Dim Image1 As Drawing.Bitmap = New Drawing.Bitmap(CInt(width + 1), CInt(height + 1), Drawing.Imaging.PixelFormat.Format24bppRgb) For x = width To 0 Step -1 For y = height To 0 Step -1 Image1.SetPixel(x, height - y, Drawing.Color.FromArgb(arrPixels(2, x, y), arrPixels(1, x, y), arrPixels(0, x, y))) Next y Next x End If End Sub Private Sub VSTwain1_ScanCompleted() Console.WriteLine("Scan is completed.") End Sub Private Sub VSTwain1_ScanFailed(errorString As String) Console.WriteLine(String.Format("Scan is failed: {0}.", errorString)) End Sub Private Sub VSTwain1_ScanCanceled() Console.WriteLine("Scan is canceled.") End Sub