使用文档进纸器的 WIA 双面扫描

Posted

技术标签:

【中文标题】使用文档进纸器的 WIA 双面扫描【英文标题】:WIA Duplex scanning using document feeder 【发布时间】:2018-04-27 06:31:42 【问题描述】:

下面是我尝试从双面扫描仪传输图像的 C# 代码。我能够获得一张图像(仅限正面),但我无法获得第二张图像。我尝试将设备属性 3088 更改为 5,但我遇到了灾难性故障。我在 Windows 10、64 位上使用 WIA 2.0,但项目使用的是 X86。正如我在之前的问题中所读到的那样,我也尝试过两次传输图像,但出现错误。我正在使用 duplexid600 扫描仪,并且从 windows 扫描仪软件中我能够获得双面图像。下面是我的代码

 CommonDialogClass commonDialogClass = new CommonDialogClass();
        Device scannerDevice = commonDialogClass.ShowSelectDevice(WiaDeviceType.ScannerDeviceType, false, false);
        if (scannerDevice != null)
        
            Item scannnerItem = scannerDevice.Items[1];
             //object value;

           // AdjustScannerSettings(scannnerItem, 300, 0, 0, 1010, 620, 0, 0);

           // object kuku;
           // kuku = scannerDevice.Properties["Document Handling Select"].get_Value();

            scannerDevice.Properties["Document Handling Select"].set_Value(1);//3088

           // kuku = scannerDevice.Properties["Document Handling Select"].get_Value();

            scannerDevice.Properties["Pages"].set_Value(1);//3096


           // object scanResult = commonDialogClass.ShowTransfer(scannnerItem, WIA.FormatID.wiaFormatTIFF, false);
            object scanResult = scannnerItem.Transfer(WIA.FormatID.wiaFormatBMP);
            //object scanResult1 = scannnerItem.Transfer(WIA.FormatID.wiaFormatTIFF);

            if (scanResult != null)
            
                ImageFile image = (ImageFile) scanResult;
               // string fileName = Path.GetTempPath() + DateTime.Now.ToString("dd-MM-yyyy-hh-mm-ss-fffffff") + ".tif";


                var imageBytes = (byte[])image.FileData.get_BinaryData();
                var ms = new MemoryStream(imageBytes);
                var img = Image.FromStream(ms);

                 //int pageCount = 0;
                 //Image Tiff = img;
                 //pageCount = Tiff.GetFrameCount(FrameDimension.Page);
                 // Tiff.Dispose();


                // SaveImageToPNGFile(image, fileName);
                pictureBoxScannedImage.Image = img;

            
        

【问题讨论】:

【参考方案1】:

调用这个两次,如果您将 3088 设置为 5(双面),它应该给出第二张图像。

   object scanResult = scannnerItem.Transfer(WIA.FormatID.wiaFormatBMP);
   object scanResultbacksite = scannnerItem.Transfer(WIA.FormatID.wiaFormatBMP);

但请注意 - 在我的扫描仪上使用第二个“开始扫描”命令,您发出了一个新任务,这意味着您的扫描仪可能已经开始扫描第二个物理页面 - 同时将后台分配给您的文件。如果您知道解决方法,请告诉我!

【讨论】:

以上是关于使用文档进纸器的 WIA 双面扫描的主要内容,如果未能解决你的问题,请参考以下文章

使用 WIA 自动进纸器扫描仪扫描第二页失败

通过进纸器进行 WIA 扫描

WIA 2.0 复式属性

使用 WIA 或 TWAIN 扫描页面

使用 NTwain 从进纸器扫描文档

Twain 问题:是不是可以仅从进纸器扫描一份文档?