ImageGear for C and C++ on Windows v19.10 - Updated
Scanning
User Guide > How to Work with... > Common Operations > Scanning

ImageGear provides support for TWAIN and ISIS scanning:

When the TWAIN specification was released, there were issues both with the specification and with field implementations which caused substantial problems of compatibility and performance. To a lesser extent, these problems continue to inhibit TWAIN's acceptance beyond it's historical base.

The philosophy of TWAIN is that the scanner vendor (and hence the TWAIN drivers) should determine the proper graphical user interface to control the scanner. Programmatic control of the scanner has, therefore, rarely been included by the TWAIN driver implementers. The philosophy of ISIS is that programmatic control of the scanner is paramount, and a consistent, optional GUI is available to the developer as well.

Since virtually every ISIS driver has been created either by DELL EMC Captiva Software, or with access to the PixTool's toolkits and sample source code, there is a high degree of API consistency between ISIS drivers - even drivers for scanning devices as different as a hand scanner and a digital copier. Due to the complexity of the TWAIN specification, the shortage of good example code, the lack of sophisticated testing tools, and the large number of different implementers, TWAIN has had difficulty meeting its goal of true "plug and play" compatibility. Often, applications don't work with TWAIN drivers that are new and weren't tested by the application developer.

The TWAIN specification is not designed for efficiently moving data from the image source (typically a scanner) to its destination (typically a viewer, printer, file, or combination of these). Therefore, it is not optimized for writing drivers that keep up with high-speed scanners. On the other hand, ISIS excels at running scanners at or above their rated speed. It does so by linking drivers together in a pipe so that data flows from scanner driver, to compression driver, to packaging driver, to a file, viewer, or printer in a continuous stream, usually without a need to buffer more than a small portion of the entire image.

Because ISIS drivers are arranged in a pipe when they are used, each driver is specialized to perform only one function. Drivers are typically small and modular. TWAIN drivers, on the other hand, must encompass all of the necessary functionality in a single driver, and are therefore generally much larger. Because of the modularity of ISIS drivers, it is much easier and faster to improve functionality without recompiling, retesting, and re-releasing a large program. Furthermore, ISIS allows new functionality to be introduced into an existing application with very little modification.