VintaSoft Twain .NET SDK 15.0: Documentation for .NET developer
Vintasoft.WinTwain Namespace / ExtendedImageInfoCollection Class
Members Object Syntax Example Hierarchy Requirements SeeAlso
In This Topic
    ExtendedImageInfoCollection Class
    In This Topic
    Class that allows to extract extended information about acquired image.
    Object Model
    ExtendedImageInfo ExtendedImageInfoCollection
    Syntax
    'Declaration
    
    <DefaultMemberAttribute("Item")>
    Public NotInheritable Class ExtendedImageInfoCollection
       Inherits System.Collections.CollectionBase
    
    
    [DefaultMember("Item")]
    public sealed class ExtendedImageInfoCollection : System.Collections.CollectionBase
    
    
    [DefaultMember("Item")]
    public __gc __sealed class ExtendedImageInfoCollection : public System.Collections.CollectionBase*
    
    
    [DefaultMember("Item")]
    public ref class ExtendedImageInfoCollection sealed : public System.Collections.CollectionBase^
    
    
    Example

    This C#/VB.NET code shows how to that demonstrates how to retrieve the extended information (document number, page number, camera, frame number, frame, pixel flavor) about acquired image.

    
    Partial Public Class How_to_get_extended_information_about_acquired_image
        Inherits Form
    
        ''' <summary>
        ''' TWAIN device manager.
        ''' </summary>
        Private _deviceManager As Vintasoft.Twain.DeviceManager
    
    
    
        Public Sub New()
            InitializeComponent()
    
            ' create and open device manager
            _deviceManager = New Vintasoft.Twain.DeviceManager(Me, Me.Handle)
            _deviceManager.Open()
        End Sub
    
    
    
        ''' <summary>
        ''' Acquire images asynchronously.
        ''' </summary>
        Public Sub AcquireImagesAsynchronously()
            Try
                ' get reference to the default device
                Dim device1 As Vintasoft.Twain.Device = _deviceManager.DefaultDevice
    
                ' subscribe to the device events
                AddHandler device1.ImageAcquired, New EventHandler(Of Vintasoft.Twain.ImageAcquiredEventArgs)(AddressOf device_ImageAcquired)
                AddHandler device1.ScanFinished, New EventHandler(AddressOf device_ScanFinished)
    
                ' set scanning settings
                device1.TransferMode = Vintasoft.Twain.TransferMode.Memory
                device1.ShowUI = False
                device1.DisableAfterAcquire = True
    
                ' open the device
                device1.Open()
    
                ' specify that extended information about acquired image is necessary
                device1.ExtendedImageInfo.Add(New Vintasoft.Twain.ExtendedImageInfo(Vintasoft.Twain.ExtendedImageInfoId.DocumentNumber))
                device1.ExtendedImageInfo.Add(New Vintasoft.Twain.ExtendedImageInfo(Vintasoft.Twain.ExtendedImageInfoId.PageNumber))
                device1.ExtendedImageInfo.Add(New Vintasoft.Twain.ExtendedImageInfo(Vintasoft.Twain.ExtendedImageInfoId.Camera))
                device1.ExtendedImageInfo.Add(New Vintasoft.Twain.ExtendedImageInfo(Vintasoft.Twain.ExtendedImageInfoId.FrameNumber))
                device1.ExtendedImageInfo.Add(New Vintasoft.Twain.ExtendedImageInfo(Vintasoft.Twain.ExtendedImageInfoId.Frame))
                device1.ExtendedImageInfo.Add(New Vintasoft.Twain.ExtendedImageInfo(Vintasoft.Twain.ExtendedImageInfoId.PixelFlavor))
    
                ' acquire images asynchronously
                device1.Acquire()
            Catch ex As Vintasoft.Twain.TwainException
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    
        ''' <summary>
        ''' Image is acquired.
        ''' </summary>
        Private Sub device_ImageAcquired(ByVal sender As Object, ByVal e As Vintasoft.Twain.ImageAcquiredEventArgs)
            ' output an extended information about the acquired image
    
            extendedImageInfoAboutAcquiredImageTextBox.Text += "IMAGE IS ACQUIRED" + Environment.NewLine
            extendedImageInfoAboutAcquiredImageTextBox.Text += Environment.NewLine
    
            Dim device As Vintasoft.Twain.Device = DirectCast(sender, Vintasoft.Twain.Device)
            For i As Integer = 0 To device.ExtendedImageInfo.Count - 1
                AddExtendedImageInfoToResultTextBox(i, device.ExtendedImageInfo(i))
            Next
            extendedImageInfoAboutAcquiredImageTextBox.Text += Environment.NewLine
    
            ' dispose the acquired image
            e.Image.Dispose()
        End Sub
    
        ''' <summary>
        ''' Add an extended image info to the result text box.
        ''' </summary>
        Private Sub AddExtendedImageInfoToResultTextBox(ByVal index As Integer, ByVal info As Vintasoft.Twain.ExtendedImageInfo)
            If Not info.IsValueValid Then
                Return
            End If
    
            extendedImageInfoAboutAcquiredImageTextBox.Text += String.Format("Extended image info {0}", index)
            extendedImageInfoAboutAcquiredImageTextBox.Text += Environment.NewLine
    
            extendedImageInfoAboutAcquiredImageTextBox.Text += String.Format("  Name={0}", [Enum].GetName(GetType(Vintasoft.Twain.ExtendedImageInfoId), info.InfoId))
            extendedImageInfoAboutAcquiredImageTextBox.Text += Environment.NewLine
    
            extendedImageInfoAboutAcquiredImageTextBox.Text += String.Format("  Id={0}", info.InfoId)
            extendedImageInfoAboutAcquiredImageTextBox.Text += Environment.NewLine
    
            extendedImageInfoAboutAcquiredImageTextBox.Text += String.Format("  Value type={0}", info.ValueType)
            extendedImageInfoAboutAcquiredImageTextBox.Text += Environment.NewLine
    
            Dim oneDeviceCapabilityValue As Vintasoft.Twain.TwainOneValueContainer = TryCast(info.Value, Vintasoft.Twain.TwainOneValueContainer)
            If oneDeviceCapabilityValue IsNot Nothing Then
                extendedImageInfoAboutAcquiredImageTextBox.Text += String.Format("  Value={0}", oneDeviceCapabilityValue.Value)
                extendedImageInfoAboutAcquiredImageTextBox.Text += Environment.NewLine
            Else
                Dim arrayDeviceCapabilityValue As Vintasoft.Twain.TwainArrayValueContainer = TryCast(info.Value, Vintasoft.Twain.TwainArrayValueContainer)
                If arrayDeviceCapabilityValue IsNot Nothing Then
                    extendedImageInfoAboutAcquiredImageTextBox.Text += "Values: "
                    If arrayDeviceCapabilityValue.Values.[GetType]() Is GetType(Byte()) Then
                        extendedImageInfoAboutAcquiredImageTextBox.Text += String.Format("byte[{0}]", arrayDeviceCapabilityValue.Values.Length)
                    Else
                        For i As Integer = 0 To arrayDeviceCapabilityValue.Values.Length - 1
                            extendedImageInfoAboutAcquiredImageTextBox.Text += String.Format("{0}, ", arrayDeviceCapabilityValue.Values.GetValue(i))
                        Next
                    End If
                    extendedImageInfoAboutAcquiredImageTextBox.Text += Environment.NewLine
                End If
            End If
        End Sub
    
        ''' <summary>
        ''' Scan is finished.
        ''' </summary>
        Private Sub device_ScanFinished(ByVal sender As Object, ByVal e As EventArgs)
            Dim device1 As Vintasoft.Twain.Device = DirectCast(sender, Vintasoft.Twain.Device)
    
            ' unsubscribe from device events
            RemoveHandler device1.ImageAcquired, New EventHandler(Of Vintasoft.Twain.ImageAcquiredEventArgs)(AddressOf device_ImageAcquired)
            RemoveHandler device1.ScanFinished, New EventHandler(AddressOf device_ScanFinished)
    
            ' if device is not closed
            If device1.State <> Vintasoft.Twain.DeviceState.Closed Then
                ' close the device
                device1.Close()
            End If
    
            MessageBox.Show("Scan is finished.")
        End Sub
    
    End Class
    
    
    
    namespace TwainExamples_CSharp
    {
        public partial class How_to_get_extended_information_about_acquired_image : System.Windows.Forms.Form
        {
    
            /// <summary>
            /// TWAIN device manager.
            /// </summary>
            Vintasoft.Twain.DeviceManager _deviceManager;
    
    
    
            public How_to_get_extended_information_about_acquired_image()
            {
                InitializeComponent();
    
                // create and open device manager
                _deviceManager = new Vintasoft.Twain.DeviceManager(this, this.Handle);
                _deviceManager.Open();
            }
    
    
    
            /// <summary>
            /// Acquire images asynchronously.
            /// </summary>
            public void AcquireImagesAsynchronously()
            {
                try
                {
                    // get reference to the default device
                    Vintasoft.Twain.Device device = _deviceManager.DefaultDevice;
    
                    // subscribe to the device events
                    device.ImageAcquired += new System.EventHandler<Vintasoft.Twain.ImageAcquiredEventArgs>(device_ImageAcquired);
                    device.ScanFinished += new System.EventHandler(device_ScanFinished);
    
                    // set scanning settings
                    device.TransferMode = Vintasoft.Twain.TransferMode.Memory;
                    device.ShowUI = false;
                    device.DisableAfterAcquire = true;
    
                    // open the device
                    device.Open();
    
                    // specify that extended information about acquired image is necessary
                    device.ExtendedImageInfo.Add(new Vintasoft.Twain.ExtendedImageInfo(Vintasoft.Twain.ExtendedImageInfoId.DocumentNumber));
                    device.ExtendedImageInfo.Add(new Vintasoft.Twain.ExtendedImageInfo(Vintasoft.Twain.ExtendedImageInfoId.PageNumber));
                    device.ExtendedImageInfo.Add(new Vintasoft.Twain.ExtendedImageInfo(Vintasoft.Twain.ExtendedImageInfoId.Camera));
                    device.ExtendedImageInfo.Add(new Vintasoft.Twain.ExtendedImageInfo(Vintasoft.Twain.ExtendedImageInfoId.FrameNumber));
                    device.ExtendedImageInfo.Add(new Vintasoft.Twain.ExtendedImageInfo(Vintasoft.Twain.ExtendedImageInfoId.Frame));
                    device.ExtendedImageInfo.Add(new Vintasoft.Twain.ExtendedImageInfo(Vintasoft.Twain.ExtendedImageInfoId.PixelFlavor));
    
                    // acquire images asynchronously
                    device.Acquire();
                }
                catch (Vintasoft.Twain.TwainException ex)
                {
                    System.Windows.Forms.MessageBox.Show(ex.Message);
                }
            }
    
            /// <summary>
            /// Image is acquired.
            /// </summary>
            private void device_ImageAcquired(object sender, Vintasoft.Twain.ImageAcquiredEventArgs e)
            {
                // output an extended information about the acquired image
    
                extendedImageInfoAboutAcquiredImageTextBox.Text += "IMAGE IS ACQUIRED" + System.Environment.NewLine;
                extendedImageInfoAboutAcquiredImageTextBox.Text += System.Environment.NewLine;
    
                Vintasoft.Twain.Device device = (Vintasoft.Twain.Device)sender;
                for (int i = 0; i < device.ExtendedImageInfo.Count; i++)
                {
                    AddExtendedImageInfoToResultTextBox(i, device.ExtendedImageInfo[i]);
                }
                extendedImageInfoAboutAcquiredImageTextBox.Text += System.Environment.NewLine;
    
                // dispose the acquired image
                e.Image.Dispose();            
            }
    
            /// <summary>
            /// Add an extended image info to the result text box.
            /// </summary>
            private void AddExtendedImageInfoToResultTextBox(int index, Vintasoft.Twain.ExtendedImageInfo info)
            {
                if (!info.IsValueValid)
                    return;
    
                extendedImageInfoAboutAcquiredImageTextBox.Text += string.Format("Extended image info {0}", index);
                extendedImageInfoAboutAcquiredImageTextBox.Text += System.Environment.NewLine;
    
                extendedImageInfoAboutAcquiredImageTextBox.Text += string.Format("  Name={0}", System.Enum.GetName(typeof(Vintasoft.Twain.ExtendedImageInfoId), info.InfoId));
                extendedImageInfoAboutAcquiredImageTextBox.Text += System.Environment.NewLine;
    
                extendedImageInfoAboutAcquiredImageTextBox.Text += string.Format("  Id={0}", info.InfoId);
                extendedImageInfoAboutAcquiredImageTextBox.Text += System.Environment.NewLine;
    
                extendedImageInfoAboutAcquiredImageTextBox.Text += string.Format("  Value type={0}", info.ValueType);
                extendedImageInfoAboutAcquiredImageTextBox.Text += System.Environment.NewLine;
    
                Vintasoft.Twain.TwainOneValueContainer oneDeviceCapabilityValue = info.Value as Vintasoft.Twain.TwainOneValueContainer;
                if (oneDeviceCapabilityValue != null)
                {
                    extendedImageInfoAboutAcquiredImageTextBox.Text += string.Format("  Value={0}", oneDeviceCapabilityValue.Value);
                    extendedImageInfoAboutAcquiredImageTextBox.Text += System.Environment.NewLine;
                }
                else
                {
                    Vintasoft.Twain.TwainArrayValueContainer arrayDeviceCapabilityValue = info.Value as Vintasoft.Twain.TwainArrayValueContainer;
                    if (arrayDeviceCapabilityValue != null)
                    {
                        extendedImageInfoAboutAcquiredImageTextBox.Text += "Values: ";
                        if (arrayDeviceCapabilityValue.Values.GetType() == typeof(byte[]))
                        {
                            extendedImageInfoAboutAcquiredImageTextBox.Text += string.Format("byte[{0}]", arrayDeviceCapabilityValue.Values.Length);
                        }
                        else
                        {
                            for (int i = 0; i < arrayDeviceCapabilityValue.Values.Length; i++)
                                extendedImageInfoAboutAcquiredImageTextBox.Text += string.Format("{0}, ", arrayDeviceCapabilityValue.Values.GetValue(i));
                        }
                        extendedImageInfoAboutAcquiredImageTextBox.Text += System.Environment.NewLine;
                    }
                }
            }
            
            /// <summary>
            /// Scan is finished.
            /// </summary>
            void device_ScanFinished(object sender, System.EventArgs e)
            {
                Vintasoft.Twain.Device device = (Vintasoft.Twain.Device)sender;
    
                // unsubscribe from device events
                device.ImageAcquired -= new System.EventHandler<Vintasoft.Twain.ImageAcquiredEventArgs>(device_ImageAcquired);
                device.ScanFinished -= new System.EventHandler(device_ScanFinished);
    
                // if device is not closed
                if (device.State != Vintasoft.Twain.DeviceState.Closed)
                    // close the device
                    device.Close();
    
                System.Windows.Forms.MessageBox.Show("Scan is finished.");
            }
    
        }
    }
    
    

    Inheritance Hierarchy

    System.Object
       System.Collections.CollectionBase
          Vintasoft.WinTwain.ExtendedImageInfoCollection

    Requirements

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

    See Also