VintaSoft Twain .NET SDK 15.4: Documentation for .NET developer
Vintasoft.WpfTwain Namespace / AcquiredImage Class
Members Object Syntax Example Hierarchy Requirements SeeAlso
In This Topic
AcquiredImage Class
In This Topic
Class that represents an image acquired from TWAIN device.
Object Model
ImageInfo AcquiredImage
Syntax
'Declaration

Public NotInheritable Class AcquiredImage

public sealed class AcquiredImage

Example

This C#/VB.NET code shows how to acquire images from TWAIN device, process images and save only not blank images to a multipage TIFF file.


''' <summary>
''' Acquires images from TWAIN device, processes images and saves only not blank images to a multipage TIFF file.
''' </summary>
Public Shared Sub AcquireImagesFromTwainDeviceAndProcessImages()
    ' create the device manager
    Using deviceManager As New Vintasoft.Twain.DeviceManager()
        ' open the device manager
        deviceManager.Open()

        ' select the device in the default device selectio ndialog
        deviceManager.ShowDefaultDeviceSelectionDialog()

        ' get reference to the selected device
        Dim device As Vintasoft.Twain.Device = deviceManager.DefaultDevice

        ' specify that device UI must not be used
        device.ShowUI = False
        ' specify that device must be closed after scan
        device.DisableAfterAcquire = True

        Dim tiffFilename As String = System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), "multipage.tif")

        ' acquire images from device
        Dim acquireModalState As Vintasoft.Twain.AcquireModalState = Vintasoft.Twain.AcquireModalState.None
        Dim acquiredImage As Vintasoft.Twain.AcquiredImage
        Do
            acquireModalState = device.AcquireModal()
            Select Case acquireModalState
                Case Vintasoft.Twain.AcquireModalState.ImageAcquired
                    ' get reference to the image acquired from device
                    acquiredImage = device.AcquiredImage

                    ' despeckle/deskew/detect border
                    ProcessAcquiredImage(acquiredImage)
                    ' add image to multipage TIFF file if image is not blank
                    If Not acquiredImage.IsBlank(0.01F) Then
                        acquiredImage.Save(tiffFilename)
                    End If

                    ' dispose acquired image
                    acquiredImage.Dispose()
                    Exit Select
            End Select
        Loop While acquireModalState <> Vintasoft.Twain.AcquireModalState.None

        ' close the device
        device.Close()

        ' close the device manager
        deviceManager.Close()
    End Using
End Sub

Private Shared Sub ProcessAcquiredImage(acquiredImage As Vintasoft.Twain.AcquiredImage)
    System.Console.WriteLine(String.Format("Image ({0})", acquiredImage.ImageInfo))

    Try
        ' subscribe to processing events
        AddHandler acquiredImage.Processing, New System.EventHandler(Of Vintasoft.Twain.ImageProcessing.TwainAcquiredImageProcessingEventArgs)(AddressOf acquiredImage_Processing)
        AddHandler acquiredImage.Progress, New System.EventHandler(Of Vintasoft.Twain.ImageProcessing.TwainAcquiredImageProcessingProgressEventArgs)(AddressOf acquiredImage_Progress)
        AddHandler acquiredImage.Processed, New System.EventHandler(Of Vintasoft.Twain.ImageProcessing.TwainAcquiredImageProcessedEventArgs)(AddressOf acquiredImage_Processed)

        ' despeckle/deskew/detect border
        acquiredImage.Despeckle(8, 25, 30, 400)
        acquiredImage.Deskew(Vintasoft.Twain.ImageProcessing.TwainBorderColor.AutoDetect, 5, 5)
        acquiredImage.DetectBorder(5)
    Catch ex As System.Exception
        System.Console.WriteLine("Error: " & ex.Message)
    Finally
        ' unsubscribe from processing events
        RemoveHandler acquiredImage.Processing, New System.EventHandler(Of Vintasoft.Twain.ImageProcessing.TwainAcquiredImageProcessingEventArgs)(AddressOf acquiredImage_Processing)
        RemoveHandler acquiredImage.Progress, New System.EventHandler(Of Vintasoft.Twain.ImageProcessing.TwainAcquiredImageProcessingProgressEventArgs)(AddressOf acquiredImage_Progress)
        RemoveHandler acquiredImage.Processed, New System.EventHandler(Of Vintasoft.Twain.ImageProcessing.TwainAcquiredImageProcessedEventArgs)(AddressOf acquiredImage_Processed)
    End Try
End Sub

Private Shared Sub acquiredImage_Processing(sender As Object, e As Vintasoft.Twain.ImageProcessing.TwainAcquiredImageProcessingEventArgs)
    System.Console.Write(e.Action.ToString() & " ")
End Sub

Private Shared Sub acquiredImage_Progress(sender As Object, e As Vintasoft.Twain.ImageProcessing.TwainAcquiredImageProcessingProgressEventArgs)
    System.Console.Write(".")
End Sub

Private Shared Sub acquiredImage_Processed(sender As Object, e As Vintasoft.Twain.ImageProcessing.TwainAcquiredImageProcessedEventArgs)
    System.Console.WriteLine(" finished")
End Sub


/// <summary>
/// Acquires images from TWAIN device, processes images and saves only not blank images to a multipage TIFF file.
/// </summary>
public static void AcquireImagesFromTwainDeviceAndProcessImages()
{
    // create the device manager
    using (Vintasoft.Twain.DeviceManager deviceManager = new Vintasoft.Twain.DeviceManager())
    {
        // open the device manager
        deviceManager.Open();

        // select the device in the default device selectio ndialog
        deviceManager.ShowDefaultDeviceSelectionDialog();

        // get reference to the selected device
        Vintasoft.Twain.Device device = deviceManager.DefaultDevice;

        // specify that device UI must not be used
        device.ShowUI = false;
        // specify that device must be closed after scan
        device.DisableAfterAcquire = true;

        string tiffFilename = System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), "multipage.tif");

        // acquire images from device
        Vintasoft.Twain.AcquireModalState acquireModalState = Vintasoft.Twain.AcquireModalState.None;
        Vintasoft.Twain.AcquiredImage acquiredImage;
        do
        {
            acquireModalState = device.AcquireModal();
            switch (acquireModalState)
            {
                case Vintasoft.Twain.AcquireModalState.ImageAcquired:
                    // get reference to the image acquired from device
                    acquiredImage = device.AcquiredImage;

                    // despeckle/deskew/detect border
                    ProcessAcquiredImage(acquiredImage);
                    // add image to multipage TIFF file if image is not blank
                    if (!acquiredImage.IsBlank(0.01f))
                        acquiredImage.Save(tiffFilename);

                    // dispose acquired image
                    acquiredImage.Dispose();
                    break;
            }
        }
        while (acquireModalState != Vintasoft.Twain.AcquireModalState.None);

        // close the device
        device.Close();

        // close the device manager
        deviceManager.Close();
    }
}

private static void ProcessAcquiredImage(Vintasoft.Twain.AcquiredImage acquiredImage)
{
    System.Console.WriteLine(string.Format("Image ({0})", acquiredImage.ImageInfo));

    try
    {
        // subscribe to processing events
        acquiredImage.Processing += new System.EventHandler<Vintasoft.Twain.ImageProcessing.TwainAcquiredImageProcessingEventArgs>(acquiredImage_Processing);
        acquiredImage.Progress += new System.EventHandler<Vintasoft.Twain.ImageProcessing.TwainAcquiredImageProcessingProgressEventArgs>(acquiredImage_Progress);
        acquiredImage.Processed += new System.EventHandler<Vintasoft.Twain.ImageProcessing.TwainAcquiredImageProcessedEventArgs>(acquiredImage_Processed);

        // despeckle/deskew/detect border
        acquiredImage.Despeckle(8, 25, 30, 400);
        acquiredImage.Deskew(Vintasoft.Twain.ImageProcessing.TwainBorderColor.AutoDetect, 5, 5);
        acquiredImage.DetectBorder(5);
    }
    catch (System.Exception ex)
    {
        System.Console.WriteLine("Error: " + ex.Message);
    }
    finally
    {
        // unsubscribe from processing events
        acquiredImage.Processing -= new System.EventHandler<Vintasoft.Twain.ImageProcessing.TwainAcquiredImageProcessingEventArgs>(acquiredImage_Processing);
        acquiredImage.Progress -= new System.EventHandler<Vintasoft.Twain.ImageProcessing.TwainAcquiredImageProcessingProgressEventArgs>(acquiredImage_Progress);
        acquiredImage.Processed -= new System.EventHandler<Vintasoft.Twain.ImageProcessing.TwainAcquiredImageProcessedEventArgs>(acquiredImage_Processed);
    }
}

static void acquiredImage_Processing(object sender, Vintasoft.Twain.ImageProcessing.TwainAcquiredImageProcessingEventArgs e)
{
    System.Console.Write(e.Action.ToString() + " ");
}

static void acquiredImage_Progress(object sender, Vintasoft.Twain.ImageProcessing.TwainAcquiredImageProcessingProgressEventArgs e)
{
    System.Console.Write(".");
}

static void acquiredImage_Processed(object sender, Vintasoft.Twain.ImageProcessing.TwainAcquiredImageProcessedEventArgs e)
{
    System.Console.WriteLine(" finished");
}

Inheritance Hierarchy

System.Object
   Vintasoft.WpfTwain.AcquiredImage

Requirements

Target Platforms: .NET 10; .NET 9; .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

See Also