当前位置:首页 > Windows程序 > 正文

C#调用TWAIN使用Kodak组件获取扫描仪图片数据

2021-03-29 Windows程序

其中一种就是微软官方推出的WIA接口调用扫描仪,这种方式是目前最新的。其实这种方式很容易编写,

只不过它内部不会存储用户需要扫描的分辨率等信息,不过这种方法在与方便快捷,直接安装WIA控件到

Windows,直接在C#代码中编写就可以直接调用,不用自己编辑控件的属性等,很方便易用。

另外一种方式就是传统的TWIAN,因为很多扫描仪厂家都墨守陈规的遵循了TWAIN的潜规则,所以这种方法

也是得到了很多编程爱好者的欢迎,这个接口可以直接调用扫描仪厂家已经编写好的扫描窗口,可以实现在驱

动层获取到图片信息,而且这种方法的好处就是可以批量扫描,添加Kodak扫描控件后,也可以实现批量扫描

的功能,而且还提供图片编辑等功能。

Kodak方法所需要的系统组件: 
imgadmin.ocx      imgcmn.dll          imgedit.ocx       imgscan.ocx        xiffr3_0.dll
imgshl.dll        imgthumb.ocx        imm32.dll         jpeg1x32.dll       tifflt.dll
jpeg2x32.dll      oieng400.dll        oiprt400.dll      oislb400.dll       oiui400.dll
oissq400.dll      oitwa400.dll        Run Kodak.bat
      真正要用到的空间只有两个。不过,在扫描过程中,为了保证图片的编辑以及其他的操作不受影响,建议全部

安装,运行Run Kodak.bat注册所有的组件。

在Kodak的扫描组件中,,我们需要的是imgscan.ocx、imgadmin.ocx、imgedit.ocx三个为主要的控件,其中

imgscan.ocx为Kodak的主要扫描组件。

所有的扫描组件都安装完毕之后,接下来就是在C#中添加扫描组件的调用,操作、获取扫描仪中的数据

。在项目工程中,添加WIA引用以及Kodak组件的应用,Kodak属于工具类,所以在工具箱中还需要添加Kodak组

件工具。

使用Kodak扫描,需要拖放Kodak扫描控件到窗口程序中
添加Kodak的命名空间:

using ScanLibCtl;

下面是在button时间中的代码:

SealPicture.Image = null; string paths =@"E:\img"; try { File.Delete(paths); } catch { } int ll_rtn = axImgScan.OpenScanner(); //打开扫描仪 if (ll_rtn == 0) { if (axImgScan.ScannerAvailable() == true)//判断扫描仪是否可用 { axImgScan.MultiPage = true;//是否多页 axImgScan.PageCount = axImgScan.PageCount + 1; axImgScan.Image = paths; axImgScan.FileType = ScanLibCtl.FileTypeConstants.TIFF;//设置文件类型 axImgScan.CompressionType = CompressionTypeConstants.JPEG; axImgScan.ScanTo = ScanToConstants.FileOnly; axImgScan.SetPageTypeCompressionOpts(CompPreferenceConstants.GoodDisplay,ImageTypeConstants.ColorPal4Bit, CompTypeConstants.JPEGCompression,CompInfoConstants.JPEGHighHigh);//.G31DFaxRBO); axImgScan.StopScanBox = false; axImgScan.ShowSetupBeforeScan = true;//是否在扫描前显示设置界面 axImgScan.Show(); ll_rtn = axImgScan.StartScan();//开始扫描 //以文件流的形式读取图片文件并释放,以便下一次扫面前删除文件 try { FileStream Files = new FileStream(paths, FileMode.Open); Image Picture = Image.FromStream(Files); SealPicture.Image = Picture; Files.Close(); } catch { } if (ll_rtn == 9254 || ll_rtn == 0) { } else { MessageBox.Show("扫描仪没有正确连接或扫描控件已破坏,请检查!", "系统提示...", MessageBoxButtons.OK, MessageBoxIcon.Stop); } axImgScan.CloseScanner(); //关闭扫描仪 } else { MessageBox.Show("扫描仪没有正确连接,请重新设置!", "系统提示...",MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } else if (ll_rtn == 9219) { MessageBox.Show("系统没有安装扫描仪或扫描仪没有正确连接!", "系统提示...",MessageBoxButtons.OK, MessageBoxIcon.Exclamation); }

完成这些代码的编写,也就可以完成了通过调用WIA与Kodak两个扫描组件对扫描议的调用,获取扫描仪中

的图片数据。

下面是项目代码中的截图:

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/69434.html