WIA C# and VB.NET samples - ByteScout

WIA C# and VB.NET samples

WIA C# sample and WIA VB.NET sample will show you how to acquire images via WIA scanner to recognize barcodes. 

In the latest version of BarCode Reader SDK we have implemented new WIAImageScanner class that allows to acquire images and works on Windows XP, Vista, 7, Windows 8 for both x86 and x64 platforms. Find source code samples of using this class below.


using System;
using System.IO;
using System.Text;
using System.Windows.Forms;
using Bytescout.BarCodeReader;

// This example demonstrates camera image acquiring using Windows Image Acquisition (WIA).
// using built-in <span data-scayt_word="WIAImageScanner" data-scaytid="10">WIAImageScanner</span> class from <span data-scayt_word="barCode" data-scaytid="12">barCode</span> Reader SDK

<span data-scayt_word="namespace" data-scaytid="13">namespace</span> <span data-scayt_word="BarcodeFromWebCam" data-scaytid="14">BarcodeFromWebCam</span>
 static class Program
  static void Main()
            // create <span data-scayt_word="WIA" data-scaytid="15">WIA</span> scanner object
            <span data-scayt_word="WIAImageScanner" data-scaytid="16">WIAImageScanner</span> <span data-scayt_word="wiaScanner" data-scaytid="21">wiaScanner</span> = new <span data-scayt_word="WIAImageScanner" data-scaytid="17">WIAImageScanner</span>();

            wiaScanner.OutputFileNameTemplate = "<span data-scayt_word="BarCodeReader-scanned" data-scaytid="22">BarCodeReader-scanned</span>";
            wiaScanner.OutputImageFormat = WiaImageFormatType.PNG;
            wiaScanner.ImageQuality = WiaImageBias.MaximizeQuality;
            wiaScanner.ImageIntent = WiaImageIntent.UnspecifiedIntent;
            wiaScanner.ShowDeviceSelectionDialog = true;

                // run acquire and exit if canceled or zero images
                if (!wiaScanner.Acquire())

            catch (Exception E)
                string message = E.Message;
                if (E.InnerException != null)
                    message = message + "rnrn" + E.InnerException.Message;
                MessageBox.Show("Error while acquiring images:rnrn" + message);

            // Read barcode:
            Reader <span data-scayt_word="barcodeReader" data-scaytid="25">barcodeReader</span> = new Reader();
            <span data-scayt_word="FoundBarcode" data-scaytid="26">FoundBarcode</span>[] barcodes = barcodeReader.ReadFrom(wiaScanner.OutputFiles[0]);

            if (barcodes.Length > 0)
                <span data-scayt_word="StringBuilder" data-scaytid="28">StringBuilder</span> builder = new <span data-scayt_word="StringBuilder" data-scaytid="29">StringBuilder</span>();

                <span data-scayt_word="foreach" data-scaytid="30">foreach</span> (<span data-scayt_word="FoundBarcode" data-scaytid="27">FoundBarcode</span> barcode in barcodes)
                    builder.AppendLine(String.Format("Found barcode with type '{0}' and value '{1}'", barcode.Type, barcode.Value));

                MessageBox.Show(wiaScanner.OutputFiles[0] + "rnr<span data-scayt_word="nCould" data-scaytid="32">nCould</span> not find any barcode.");


Visual Basic .NET

Imports System.IO
Imports System.Text
Imports System.Windows.Forms
Imports Bytescout.BarCodeReader

' This example demonstrates camera image acquiring using Windows Image Acquisition (WIA).
' using built-in <span data-scayt_word="WIAImageScanner" data-scaytid="35">WIAImageScanner</span> class from <span data-scayt_word="barCode" data-scaytid="36">barCode</span> Reader SDK

<span data-scayt_word="NotInheritable" data-scaytid="40">NotInheritable</span> Class Program
 Private Sub New()
 End Sub
    Friend Shared Sub Main()

        ' use <span data-scayt_word="WIA" data-scaytid="37">WIA</span> barcode reader scanner
        Dim <span data-scayt_word="wiaScanner" data-scaytid="43">wiaScanner</span> As <span data-scayt_word="WIAImageScanner" data-scaytid="44">WIAImageScanner</span> = New <span data-scayt_word="WIAImageScanner" data-scaytid="45">WIAImageScanner</span>

        wiaScanner.OutputFileNameTemplate = "<span data-scayt_word="BarCodeReader-scanned" data-scaytid="50">BarCodeReader-scanned</span>"
        wiaScanner.OutputImageFormat = WiaImageFormatType.PNG
        wiaScanner.ImageQuality = WiaImageBias.MaximizeQuality
        wiaScanner.ImageIntent = WiaImageIntent.UnspecifiedIntent
        wiaScanner.ShowDeviceSelectionDialog = True

            ' run acquire and exit if canceled or zero images
            If Not wiaScanner.Acquire() Then
            End If

        Catch E As Exception
            Dim message As String = E.Message
            If E.InnerException <span data-scayt_word="IsNot" data-scaytid="53">IsNot</span> Nothing Then
                message = message + "rnrn" + E.InnerException.Message
                MessageBox.Show("Error while acquiring images:rnrn" + message)
            End If
        End Try

        ' Read barcode:
        Dim <span data-scayt_word="barcodeReader" data-scaytid="52">barcodeReader</span> As New Reader()
        Dim barcodes As <span data-scayt_word="FoundBarcode" data-scaytid="56">FoundBarcode</span>() = barcodeReader.ReadFrom(wiaScanner.OutputFiles(0))

        If barcodes.Length > 0 Then
            Dim builder As New <span data-scayt_word="StringBuilder" data-scaytid="57">StringBuilder</span>()

            For Each barcode As <span data-scayt_word="FoundBarcode" data-scaytid="59">FoundBarcode</span> In barcodes
                builder.AppendLine([String].Format("Found barcode with type '{0}' and value '{1}'", barcode.Type, barcode.Value))

            MessageBox.Show(wiaScanner.OutputFiles(0) + "" & <span data-scayt_word="Chr" data-scaytid="62">Chr</span>(13) & "" & Chr(10) & "" & Chr(13) & "" & Chr(10) & "Could not find any barcode.")

        End If

    End Sub
End Class

The demo video shows how to read Code39 barcode with ByteScout Barcode Reader SDK: