wia2.0双工扫描

本文关键字:扫描 0双 wia2 | 更新日期: 2023-09-27 17:54:53

从Vista开始,Windows自带wia2.0 (wiaaut.dll)。根据下面的知识库文章和我在各种论坛上的许多发现,使用WIA 2.0不再可能进行双工扫描。然而,本文提到了原生WIA 2.0的使用,这将使双工扫描成为可能。(https://support.microsoft.com/en-us/kb/2709992)

根据WIA 2.0文档(https://msdn.microsoft.com/en-us/library/windows/desktop/ms630196(v=vs.85).aspx),双工扫描是可能的,但使用新的WIA_IPS_DOCUMENT_HANDLING_SELECT(3088)属性。

我的问题是:

  • 我不知道如何使用本地WIA,我怀疑当使用c#时它只是不可能的。
  • 我找不到一种方法来设置新的WIA_IPS_DOCUMENT_HANDLING_SELECT属性,因为该属性不存在于我的wiaDevice属性。根据WiaDef.h,其属性id仍然是3088,唯一可能的值是0x400(1024)。
如果有人能帮我(我想还有很多人)解决这个问题,我将不胜感激!

问候,

m .

wia2.0双工扫描

经过几个小时的搜索,我在下面的帖子中找到了一个线索。https://stackoverflow.com/a/7580686/3641369

由于我使用了一遍双工扫描仪,正面和背面同时扫描。通过设置设备属性(设备属性,而不是项目属性)Document_Handling_Select为5 (Feeder + Duplex), Pages为1,调用传输方法2次,我终于得到了扫描的字体和背面。

设置wiaDev。属性["Document Handling Select"] = 5指定馈线和扫描双工的使用。

设置wiaDev。属性["Pages"] = 1指定扫描仪应该在内存中保留1页,这允许在1次扫描期间将页面的正面和背面都保留在内存中。

if (duplex)
{
     wiaDev.Properties["Document Handling Select"].set_Value(5);
     wiaDev.Properties["Pages"].set_Value(1);
} 

获取Wia项目并设置项目属性,如颜色和dpi

var item = wiaDev.Items[1];
item.Properties["6146"].set_Value((int)clr);
item.Properties["6147"].set_Value(dpi);
item.Properties["6148"].set_Value(dpi);

然后调用两次transfer方法返回两个不同的图像

var img = (ImageFile)wiaCommonDialog.ShowTransfer(item, FormatID.wiaFormatJPEG);
ImageFile imgduplex = null;
if(duplex)
   imgduplex = (ImageFile)wiaCommonDialog.ShowTransfer(item, FormatID.wiaFormatJPEG);

希望这能帮助到一些人!