Класс ExtendedImageInfoCollection
В этом разделе
Класс, позволяющий извлекать расширенную информацию о отсканированном изображении.
Объектная модель
Синтаксис
Пример
Вот C#/VB.NET код, который демонстрирует, как получить расширенную информацию (номер документа, номер страницы, камеру, номер кадра, кадр, тип пикселя) о полученном изображении.
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.");
}
}
}
Иерархия наследования
System.Object
 System.Collections.CollectionBase
   Vintasoft.WinTwain.ExtendedImageInfoCollection
Требования
Целевые платформы: .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5
Смотрите также