Синхронное получение изображений от SANE сканера изображений
В этом разделе
VintaSoft Twain .NET SDK
позволяет синхронно получать изображения от SANE сканера изображений изображений (в модальном цикле).
Вот шаги, которые необходимо выполнить для синхронного получения изображений от SANE сканера изображений изображений:
- Откройте диспетчер устройств SANE.
- Откройте устройство SANE.
- Задайте параметры сканирования изображений.
- Запустите модальный цикл получения изображений от SANE устройства.
- Начните синхронное получение изображений от устройства eSCL, вызвав метод SaneLocalDevice.AcquireImageSync.
- Прервите цикл, если свойство SaneLocalDevice.HasMoreImagesToScan вернуло значение true.
Вот пример, который демонстрирует как синхронно получить изображения от SANE сканера изображений изображений и сохранить полученные изображения в PDF документ:
/// <summary>
/// Synchronously acquire images from SANE device.
/// </summary>
public void SynchronouslyAcquireImagesFromSaneDevice()
{
// 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();
int imageIndex = 0;
Vintasoft.Sane.SaneAcquiredImage acquiredImage;
do
{
try
{
// acquire image from SANE device
acquiredImage = device.AcquireImageSync();
// if image is received
if (acquiredImage != null)
{
imageIndex++;
string filename = string.Format("scannedImage-{0}.png", imageIndex);
if (System.IO.File.Exists(filename))
System.IO.File.Delete(filename);
acquiredImage.Save(filename);
System.Console.WriteLine(string.Format("Acquired image is saved to a file '{0}'.", filename));
}
// 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>
''' Synchronously acquire images from SANE device.
''' </summary>
Public Sub SynchronouslyAcquireImagesFromSaneDevice()
' 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 imageIndex As Integer = 0
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
imageIndex += 1
Dim filename As String = String.Format("scannedImage-{0}.png", imageIndex)
If System.IO.File.Exists(filename) Then
System.IO.File.Delete(filename)
End If
acquiredImage.Save(filename)
System.Console.WriteLine(String.Format("Acquired image is saved to a file '{0}'.", filename))
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