How to process an image, which is acquired from eSCL device?
 
            
                In This Topic
            
            
            
            		Here is an example that demonstrates how to acquire images from eSCL device, process images and save only not blank images to a multipage TIFF file:
		
		
    
	
	    
	    
/// <summary>
/// Acquires images from eSCL image scanning device and processes images.
/// </summary>
public void AcquireImagesFromEsclDeviceAndProcessImages()
{
    // create eSCL device manager
    using (Vintasoft.EsclImageScanning.EsclDeviceManager deviceManager = new Vintasoft.EsclImageScanning.EsclDeviceManager())
    {
        // open eSCL device manager
        deviceManager.Open();
        // wait while the eSCL device manager searches for eSCL devices
        System.Threading.Thread.Sleep(deviceManager.DeviceSearchTimeout);
        // get count of eSCL devices
        int deviceCount = deviceManager.Devices.Count;
        if (deviceCount == 0)
        {
            System.Console.WriteLine("Devices are not found.");
            return;
        }
        // select the first eSCL device
        Vintasoft.EsclImageScanning.EsclDevice device = deviceManager.Devices[0];
        // open eSCL device
        device.Open();
        Vintasoft.EsclImageScanning.EsclAcquiredImage acquiredImage = null;
        do
        {
            try
            {
                // acquire image from eSCL device
                acquiredImage = device.AcquireImageSync();
                // if image is received
                if (acquiredImage != null)
                {
                    System.Console.WriteLine("Image is acquired.");
                    // process acquired image
                    ProcessEsclAcquiredImage(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 image is acquired
        while (acquiredImage != null);
        // close eSCL device
        device.Close();
        // close eSCL device manager
        deviceManager.Close();
    }
    System.Console.ReadLine();
}
/// <summary>
/// Processes image, which is acquired from eSCL device.
/// </summary>
private void ProcessEsclAcquiredImage(Vintasoft.EsclImageScanning.EsclAcquiredImage acquiredImage)
{
    try
    {
        // subscribe to the processing events
        acquiredImage.Processing += new System.EventHandler<Vintasoft.EsclImageScanning.ImageProcessing.EsclAcquiredImageProcessingEventArgs>(acquiredImage_Processing);
        acquiredImage.Progress += new System.EventHandler<Vintasoft.EsclImageScanning.ImageProcessing.EsclAcquiredImageProcessingProgressEventArgs>(acquiredImage_Progress);
        acquiredImage.Processed += new System.EventHandler<Vintasoft.EsclImageScanning.ImageProcessing.EsclAcquiredImageProcessedEventArgs>(acquiredImage_Processed);
        // despeckle image
        acquiredImage.Despeckle(8, 25, 30, 400);
        // deskew image
        acquiredImage.Deskew(Vintasoft.EsclImageScanning.ImageProcessing.EsclBorderColor.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.EsclImageScanning.ImageProcessing.EsclAcquiredImageProcessingEventArgs>(acquiredImage_Processing);
        acquiredImage.Progress -= new System.EventHandler<Vintasoft.EsclImageScanning.ImageProcessing.EsclAcquiredImageProcessingProgressEventArgs>(acquiredImage_Progress);
        acquiredImage.Processed -= new System.EventHandler<Vintasoft.EsclImageScanning.ImageProcessing.EsclAcquiredImageProcessedEventArgs>(acquiredImage_Processed);
    }
}
/// <summary>
/// Image processing is started.
/// </summary>
private void acquiredImage_Processing(object sender, Vintasoft.EsclImageScanning.ImageProcessing.EsclAcquiredImageProcessingEventArgs e)
{
    System.Console.Write(e.Action.ToString() + " ");
}
/// <summary>
/// Image processing is in progress.
/// </summary>
private void acquiredImage_Progress(object sender, Vintasoft.EsclImageScanning.ImageProcessing.EsclAcquiredImageProcessingProgressEventArgs e)
{
    System.Console.Write(".");
}
/// <summary>
/// Image processing is finished.
/// </summary>
private void acquiredImage_Processed(object sender, Vintasoft.EsclImageScanning.ImageProcessing.EsclAcquiredImageProcessedEventArgs e)
{
    System.Console.WriteLine(" finished");
}
	     
	 
 
    
	
	    
	    
''' <summary>
''' Acquires images from eSCL image scanning device and processes images.
''' </summary>
Public Sub AcquireImagesFromEsclDeviceAndProcessImages()
    ' create eSCL device manager
    Using deviceManager As New Vintasoft.EsclImageScanning.EsclDeviceManager()
        ' open eSCL device manager
        deviceManager.Open()
        ' wait while the eSCL device manager searches for eSCL devices
        System.Threading.Thread.Sleep(deviceManager.DeviceSearchTimeout)
        ' get count of eSCL 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 eSCL device
        Dim device As Vintasoft.EsclImageScanning.EsclDevice = deviceManager.Devices(0)
        ' open eSCL device
        device.Open()
        Dim acquiredImage As Vintasoft.EsclImageScanning.EsclAcquiredImage = Nothing
        Do
            Try
                ' acquire image from eSCL device
                acquiredImage = device.AcquireImageSync()
                ' if image is received
                If acquiredImage IsNot Nothing Then
                    System.Console.WriteLine("Image is acquired.")
                    ' process acquired image
                    ProcessEsclAcquiredImage(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 image is acquired
        Loop While acquiredImage IsNot Nothing
        ' close eSCL device
        device.Close()
        ' close eSCL device manager
        deviceManager.Close()
    End Using
    System.Console.ReadLine()
End Sub
''' <summary>
''' Processes image, which is acquired from eSCL device.
''' </summary>
Private Sub ProcessEsclAcquiredImage(acquiredImage As Vintasoft.EsclImageScanning.EsclAcquiredImage)
    Try
        ' subscribe to the processing events
        AddHandler acquiredImage.Processing, New System.EventHandler(Of Vintasoft.EsclImageScanning.ImageProcessing.EsclAcquiredImageProcessingEventArgs)(AddressOf acquiredImage_Processing)
        AddHandler acquiredImage.Progress, New System.EventHandler(Of Vintasoft.EsclImageScanning.ImageProcessing.EsclAcquiredImageProcessingProgressEventArgs)(AddressOf acquiredImage_Progress)
        AddHandler acquiredImage.Processed, New System.EventHandler(Of Vintasoft.EsclImageScanning.ImageProcessing.EsclAcquiredImageProcessedEventArgs)(AddressOf acquiredImage_Processed)
        ' despeckle image
        acquiredImage.Despeckle(8, 25, 30, 400)
        ' deskew image
        acquiredImage.Deskew(Vintasoft.EsclImageScanning.ImageProcessing.EsclBorderColor.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.EsclImageScanning.ImageProcessing.EsclAcquiredImageProcessingEventArgs)(AddressOf acquiredImage_Processing)
        RemoveHandler acquiredImage.Progress, New System.EventHandler(Of Vintasoft.EsclImageScanning.ImageProcessing.EsclAcquiredImageProcessingProgressEventArgs)(AddressOf acquiredImage_Progress)
        RemoveHandler acquiredImage.Processed, New System.EventHandler(Of Vintasoft.EsclImageScanning.ImageProcessing.EsclAcquiredImageProcessedEventArgs)(AddressOf acquiredImage_Processed)
    End Try
End Sub
''' <summary>
''' Image processing is started.
''' </summary>
Private Sub acquiredImage_Processing(sender As Object, e As Vintasoft.EsclImageScanning.ImageProcessing.EsclAcquiredImageProcessingEventArgs)
    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.EsclImageScanning.ImageProcessing.EsclAcquiredImageProcessingProgressEventArgs)
    System.Console.Write(".")
End Sub
''' <summary>
''' Image processing is finished.
''' </summary>
Private Sub acquiredImage_Processed(sender As Object, e As Vintasoft.EsclImageScanning.ImageProcessing.EsclAcquiredImageProcessedEventArgs)
    System.Console.WriteLine(" finished")
End Sub