VintaSoft Twain .NET SDK 15.4: Documentation for .NET developer
Vintasoft.Sane Namespace / SaneAcquiredImage Class
Members Object Syntax Example Hierarchy Requirements SeeAlso
In This Topic
SaneAcquiredImage Class
In This Topic
Represents an image that is acquired from SANE device.
Object Model
SaneAcquiredImage
Syntax
'Declaration

Public NotInheritable Class SaneAcquiredImage

public sealed class SaneAcquiredImage

Example

This C#/VB.NET code shows how to acquire images from SANE device and process images.


''' <summary>
''' Acquires images from SANE device and processes images.
''' </summary>
Public Sub AcquireImagesFromSaneDeviceAndProcessImages()
    ' create SANE device manager
    Using deviceManager As New Vintasoft.Sane.SaneLocalDeviceManager()
        ' open SANE device manager
        deviceManager.Open()

        ' get count of SANE devices
        Dim deviceCount As Integer = deviceManager.Devices.Count
        If deviceCount = 0 Then
            System.Console.WriteLine("Devices are not found.")
            Return
        End If

        ' select the first SANE device
        Dim device As Vintasoft.Sane.SaneLocalDevice = deviceManager.Devices(0)

        ' open SANE device
        device.Open()

        Dim acquiredImage As Vintasoft.Sane.SaneAcquiredImage
        Do
            Try
                ' acquire image from SANE device
                acquiredImage = device.AcquireImageSync()
                ' if image is received
                If acquiredImage IsNot Nothing Then
                    System.Console.WriteLine("Image is acquired.")

                    ' process acquired image
                    ProcessSaneAcquiredImage(acquiredImage)
                Else
                    ' if image is not received
                    System.Console.WriteLine("Scan is completed.")
                    Exit Try
                End If
            Catch ex As System.Exception
                System.Console.WriteLine(String.Format("Scan is failed: {0}", ex.Message))
                Exit Try
            End Try
            ' while device has more images to scan
        Loop While device.HasMoreImagesToScan

        ' close SANE device
        device.Close()

        ' close SANE device manager
        deviceManager.Close()
    End Using

    System.Console.ReadLine()
End Sub

''' <summary>
''' Processes image, which is acquired from SANE device.
''' </summary>
Private Sub ProcessSaneAcquiredImage(acquiredImage As Vintasoft.Sane.SaneAcquiredImage)
    Try
        ' subscribe to the processing events
        AddHandler acquiredImage.Processing, New System.EventHandler(Of Vintasoft.Sane.ImageProcessing.SaneAcquiredImageProcessingEventArgs)(AddressOf acquiredImage_Processing)
        AddHandler acquiredImage.Progress, New System.EventHandler(Of Vintasoft.Sane.ImageProcessing.SaneAcquiredImageProcessingProgressEventArgs)(AddressOf acquiredImage_Progress)
        AddHandler acquiredImage.Processed, New System.EventHandler(Of Vintasoft.Sane.ImageProcessing.SaneAcquiredImageProcessedEventArgs)(AddressOf acquiredImage_Processed)

        ' despeckle image
        acquiredImage.Despeckle(8, 25, 30, 400)
        ' deskew image
        acquiredImage.Deskew(Vintasoft.Sane.ImageProcessing.SaneBorderColor.AutoDetect, 1, 1)
        ' detect border of image
        acquiredImage.DetectBorder(5)
    Catch ex As System.Exception
        System.Console.WriteLine("Error: " & ex.Message)
    Finally
        ' unsubscribe from the processing events
        RemoveHandler acquiredImage.Processing, New System.EventHandler(Of Vintasoft.Sane.ImageProcessing.SaneAcquiredImageProcessingEventArgs)(AddressOf acquiredImage_Processing)
        RemoveHandler acquiredImage.Progress, New System.EventHandler(Of Vintasoft.Sane.ImageProcessing.SaneAcquiredImageProcessingProgressEventArgs)(AddressOf acquiredImage_Progress)
        RemoveHandler acquiredImage.Processed, New System.EventHandler(Of Vintasoft.Sane.ImageProcessing.SaneAcquiredImageProcessedEventArgs)(AddressOf acquiredImage_Processed)
    End Try
End Sub

''' <summary>
''' Image processing is started.
''' </summary>
Private Sub acquiredImage_Processing(sender As Object, e As Vintasoft.Sane.ImageProcessing.SaneAcquiredImageProcessingEventArgs)
    System.Console.Write(e.Action.ToString() & " ")
End Sub

''' <summary>
''' Image processing is in progress.
''' </summary>
Private Sub acquiredImage_Progress(sender As Object, e As Vintasoft.Sane.ImageProcessing.SaneAcquiredImageProcessingProgressEventArgs)
    System.Console.Write(".")
End Sub

''' <summary>
''' Image processing is finished.
''' </summary>
Private Sub acquiredImage_Processed(sender As Object, e As Vintasoft.Sane.ImageProcessing.SaneAcquiredImageProcessedEventArgs)
    System.Console.WriteLine(" finished")
End Sub


/// <summary>
/// Acquires images from SANE device and processes images.
/// </summary>
public void AcquireImagesFromSaneDeviceAndProcessImages()
{
    // create SANE device manager
    using (Vintasoft.Sane.SaneLocalDeviceManager deviceManager = new Vintasoft.Sane.SaneLocalDeviceManager())
    {
        // open SANE device manager
        deviceManager.Open();

        // get count of SANE devices
        int deviceCount = deviceManager.Devices.Count;
        if (deviceCount == 0)
        {
            System.Console.WriteLine("Devices are not found.");
            return;
        }

        // select the first SANE device
        Vintasoft.Sane.SaneLocalDevice device = deviceManager.Devices[0];

        // open SANE device
        device.Open();

        Vintasoft.Sane.SaneAcquiredImage acquiredImage;
        do
        {
            try
            {
                // acquire image from SANE device
                acquiredImage = device.AcquireImageSync();
                // if image is received
                if (acquiredImage != null)
                {
                    System.Console.WriteLine("Image is acquired.");

                    // process acquired image
                    ProcessSaneAcquiredImage(acquiredImage);
                }
                // if image is not received
                else
                {
                    System.Console.WriteLine("Scan is completed.");
                    break;
                }
            }
            catch (System.Exception ex)
            {
                System.Console.WriteLine(string.Format("Scan is failed: {0}", ex.Message));
                break;
            }
        }
        // while device has more images to scan
        while (device.HasMoreImagesToScan);

        // close SANE device
        device.Close();

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

    System.Console.ReadLine();
}

/// <summary>
/// Processes image, which is acquired from SANE device.
/// </summary>
private void ProcessSaneAcquiredImage(Vintasoft.Sane.SaneAcquiredImage acquiredImage)
{
    try
    {
        // subscribe to the processing events
        acquiredImage.Processing += new System.EventHandler<Vintasoft.Sane.ImageProcessing.SaneAcquiredImageProcessingEventArgs>(acquiredImage_Processing);
        acquiredImage.Progress += new System.EventHandler<Vintasoft.Sane.ImageProcessing.SaneAcquiredImageProcessingProgressEventArgs>(acquiredImage_Progress);
        acquiredImage.Processed += new System.EventHandler<Vintasoft.Sane.ImageProcessing.SaneAcquiredImageProcessedEventArgs>(acquiredImage_Processed);

        // despeckle image
        acquiredImage.Despeckle(8, 25, 30, 400);
        // deskew image
        acquiredImage.Deskew(Vintasoft.Sane.ImageProcessing.SaneBorderColor.AutoDetect, 1, 1);
        // detect border of image
        acquiredImage.DetectBorder(5);
    }
    catch (System.Exception ex)
    {
        System.Console.WriteLine("Error: " + ex.Message);
    }
    finally
    {
        // unsubscribe from the processing events
        acquiredImage.Processing -= new System.EventHandler<Vintasoft.Sane.ImageProcessing.SaneAcquiredImageProcessingEventArgs>(acquiredImage_Processing);
        acquiredImage.Progress -= new System.EventHandler<Vintasoft.Sane.ImageProcessing.SaneAcquiredImageProcessingProgressEventArgs>(acquiredImage_Progress);
        acquiredImage.Processed -= new System.EventHandler<Vintasoft.Sane.ImageProcessing.SaneAcquiredImageProcessedEventArgs>(acquiredImage_Processed);
    }
}

/// <summary>
/// Image processing is started.
/// </summary>
private void acquiredImage_Processing(object sender, Vintasoft.Sane.ImageProcessing.SaneAcquiredImageProcessingEventArgs e)
{
    System.Console.Write(e.Action.ToString() + " ");
}

/// <summary>
/// Image processing is in progress.
/// </summary>
private void acquiredImage_Progress(object sender, Vintasoft.Sane.ImageProcessing.SaneAcquiredImageProcessingProgressEventArgs e)
{
    System.Console.Write(".");
}

/// <summary>
/// Image processing is finished.
/// </summary>
private void acquiredImage_Processed(object sender, Vintasoft.Sane.ImageProcessing.SaneAcquiredImageProcessedEventArgs e)
{
    System.Console.WriteLine(" finished");
}

Inheritance Hierarchy

System.Object
   Vintasoft.Sane.SaneAcquiredImage

Requirements

Target Platforms: .NET 10; .NET 9; .NET 8; .NET 7; .NET 6

See Also