吐温问题:是否可以从馈线上扫描一个文件?

9 c# twain

我正在使用http://www.codeproject.com/KB/dotnet/twaindotnet.aspx中的代码

我遇到了问题,因为只有在扫描进纸器中的所有文档后,twain才会返回控制权.如果我扫描20个或更多文档,这会导致高内存使用量.

我想过从进纸器一次只扫描一个文件并保存图像并再次循环调用api.

我将cap_xfercount设置为1,但这似乎没有帮助:

    TwCapability cap = new TwCapability(TwCap.XferCount, 1);
    rc = DScap(appid, srcds, TwDG.Control, TwDAT.Capability, TwMSG.Set, cap);
Run Code Online (Sandbox Code Playgroud)

从进纸器扫描一个文件我需要做什么?任何建议赞赏.

Spi*_*xff 6

对不起,我对twaindotnet项目并不熟悉,但我对通过TWAIN进​​行文档扫描有很多经验.

首先注意:并非所有文件馈送器都能以单页模式进行馈送; 一些重要的扫描仪系列一旦启动就会扫描进纸器中的所 而且,不管标准是什么,相当多的TWAIN驱动程序都不会尊重XFERCOUNT = 1.

如果您尝试通过强制扫描程序扫描"单页作业"来解决问题,则您将被限制为恰好支持该扫描程序的(不确定的)扫描程序集.TWAIN标准不需要此功能.(但是 - CAP_AUTOSCAN = FALSE,XFERCOUNT = 1将是尝试的组合.)

有一个更好的解决方案(时间和耐心允许) - 听起来你想要做的就是处理和处理每个图像到达时,而不是将它们全部收集在内存中.弄清楚如何让TWAIN库在每个图像到达时将其写入(或将其写入文件)而不是将它们堆叠在内存中,并且您将拥有适用于所有文档馈送扫描仪的解决方案.对于大多数扫描仪来说,扫描速度也会快得多......


Fil*_*und 1

这是一个供料器问题。您是否尝试过将馈线启用功能设置为 false?

\n\n

编辑:

\n\n

看来 CAP_AUTOFEED 是正确的选择。根据TWAIN 2.0规范

\n\n

CAP_AUTOFEED\n描述\n如果为 TRUE,则在获取从每页协商捕获的帧数后,源将自动从文档进纸器送入下一页。CAP_FEEDERENABLED\n必须为 TRUE 才能使用此功能。\n应用程序\n将此功能设置为 TRUE 可启用 Source\xe2\x80\x99s 自动馈送过程,或设置为 FALSE 可禁用它。\n每次传输完成后,检查TW_PENDINGXFERS。计数以确定\n源是否有更多图像要传输。-1 表示还有更多图像要传输,但\n确切数量未知。\nCAP_FEEDERLOADED 指示是否加载 Source\xe2\x80\x99s feeder。(只要此功能为 TRUE,自动进给\n过程就会继续。)

\n