How to acquire images from scanner,camera (or another TWAIN or WIA compatible device) with Bytescout Scan SDK for .NET in Visual C# - ByteScout
Announcement
Our ByteScout SDK products are sunsetting as we focus on expanding new solutions.
Learn More Open modal
Close modal
Announcement Important Update
ByteScout SDK Sunsetting Notice
Our ByteScout SDK products are sunsetting as we focus on our new & improved solutions. Thank you for being part of our journey, and we look forward to supporting you in this next chapter!

How to acquire images from scanner,camera (or another TWAIN or WIA compatible device) with Bytescout Scan SDK for .NET in Visual C#

  • Home
  • /
  • Articles
  • /
  • How to acquire images from scanner,camera (or another TWAIN or WIA compatible device) with Bytescout Scan SDK for .NET in Visual C#

This sample code demonstrates how to get images from a scanner or a web-camera or any other TWAIN and WIA compatible device using Bytescout Scan SDK for .NET and Visual C#.

Full sample code is included into the SDK.


Screenshot of C# test application:
screenshot of Visual C#  .NET test application  with Scan SDK

using System;
using System.Collections;

using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;

using Bytescout.Scan;
using System.IO;

namespace Test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

// Synchronous scan – temporary unavailable

private void btnScanToImages_Click(object sender, EventArgs e)
{
//Scan scan = new Scan();
//ArrayList images = scan.AcquireImages(this.Handle);
//FillTabsWithImages(images);

}

// Starts Asynchronous scan into images. When scan is finished then scan_TransferFinished event is called and array with images objects is passed into this event
private void btnScanToImagesAsync_Click(object sender, EventArgs e)
{
// create new Scan object
Scan scan = new Scan();

// set Scan object to save images into images array (will be passed as a paramtere in scan_TransferFinished event

scan.SaveTo = SaveTo.ImageObject;

// set function for scan finished event to indicate when image transfer is finished
scan.TransferFinished += new TransferFinishedEventHandler(scan_TransferFinished); // see scan_TransferFinished event below

// acquire images
scan.AcquireImagesAsync(this.Handle);
}

// this event captures scanned images and fills images into tabs

// you can also iterate through scannedImages array to get each image as an Image object instead
void scan_TransferFinished(Scan sender, ArrayList scannedImages)
{
FillTabsWithImages(scannedImages);
}

// this function puts retrieved images objects into tabs on the form
private void FillTabsWithImages(ArrayList images)
{
tabControl1.TabPages.Clear();

for (int i = 0; i < images.Count; i++) { TabPage page = new TabPage(); PictureBox pb = new PictureBox(); pb.Dock = DockStyle.Fill; pb.SizeMode = PictureBoxSizeMode.Zoom; if (images[i] is Image) { page.Text = "Image " + (i + 1).ToString(); pb.Image = (Image) images[i]; } else { page.Text = (String) images[i]; pb.Image = Image.FromFile((String) images[i]); } page.Controls.Add(pb); tabControl1.TabPages.Add(page); } } // acquire images into files automatically saved into the given folder with given image format and filename private void btnScanToFilesAsync_Click(object sender, EventArgs e) { // create new Scan object Scan scan = new Scan(); // set SDK to save images into files scan.SaveTo = SaveTo.File; // scan.FileNamingTemplate = "ScannedImage_{0:D2}"; // you can set output filename template // set output format as JPG image format scan.OutputFormat = OutputFormat.JPEG; // you can set output folder as well, by default output folder is the same where executable .exe is running //scan.OutputFolder = Path.GetTempPath(); // assign the event to indicate when image transfer is finished scan.TransferFinished += new TransferFinishedEventHandler(scan_TransferFinished); // acquire images scan.AcquireImagesAsync(this.Handle); } // displays ready-to-use options dialog for the scan SDK private void btnOptions_Click(object sender, EventArgs e) { Scan.ShowOptionsDialog(new Scan()); } } } [/vb]

prev
next