【问题标题】:How to display/save multiple (ADF) WIA images after scanned如何在扫描后显示/保存多个 (ADF) WIA 图像
【发布时间】:2013-05-29 23:55:22
【问题描述】:

我的任务是创建一个文档数字化程序,因为公司提出的这个程序非常糟糕。这不好。特别糟糕。经过一番研究,我开始了一个 VB.NET WPF 程序。我已经创建了登录部分并在文件将要传输的服务器中创建了文件夹,每个文件的位置都保存在 SQL 表中。反正我基本上需要三样让我头疼的东西!

1) 如何使用 WIA 扫描多个页面?这是我目前非常原始的扫描代码:

    Dim CD As New WIA.CommonDialog
    Dim txt As String
    Dim picture As Image

    Dim F As WIA.ImageFile = CD.ShowAcquireImage(WIA.WiaDeviceType.ScannerDeviceType)
    txt = txt1.Text
    F.SaveFile("\\serverlocation" + txt + "." + F.FileExtension)

Txt 基本上是用户给出的名称。问题是这段代码只扫描一页,我怎样才能让它在同一个文件/单独的文件中保存多个? (以最有效的方式)。

  1. 与上一个问题的精神相同,有没有办法将这些文件转换为 JPEG/PNG(BMP 占用大量空间),或者如果用户愿意,甚至可以将它们转换为 PDF 文件?

  2. 如何在扫描后显示扫描的图片?

我正在使用 VB.NET 和 WPF(不是表单)。任何回复将不胜感激:)。

编辑:最接近我使用 http://forums.codeguru.com/showthread.php?439027-Windows-Image-Acquisition-%28WIA%29-Code 进行多次 ADF 扫描的方法。我将 C# 转换为 VB,但代码在编译器中引发错误。

【问题讨论】:

  • 如果你在做 WPF,那么你宁愿也做 MVVM。这是获得干净代码的最佳方式,并且编写更少的代码以获得更多的结果。
  • 我会玩弄它。我已经习惯了向这类模型的“范式”转变。
  • 在 WPF 中,每当您需要 N Items 任何东西(不管那是什么东西)时,您都可以使用 ItemsControl
  • Soooo.... 我猜 ADF WIA 对 VB 来说有点难,对吧?我完蛋了。令人惊讶的是,我找不到任何可以在线使用的东西。哇。
  • 我发现的只是第三方替代品和非工作代码。我已经快要放弃了:P!

标签: wpf vb.net


【解决方案1】:
Private Function scanMe(ByVal myDPI As Integer, ByVal myHeight As Double, ByVal myWidth As Double, ByVal ShowSelectScanner As Boolean, ByVal ShowScanPreview As Boolean) As Byte()
    Dim CD As New WIA.CommonDialog
    Dim device As WIA.Device = CD.ShowSelectDevice(WIA.WiaDeviceType.ScannerDeviceType, ShowSelectScanner, False)
    Dim item As WIA.Item = device.Items(1)
    Try
        With item
            .Properties("Horizontal Resolution").Value = myDPI
            .Properties("Vertical Resolution").Value = myDPI
            .Properties("Horizontal Extent").Value = myDPI * myWidth
            .Properties("Vertical Extent").Value = myDPI * myHeight
        End With
        Dim F As WIA.ImageFile

        If ShowScanPreview Then
            F = CD.ShowAcquireImage(WiaDeviceType.ScannerDeviceType, WiaImageIntent.ColorIntent, WiaImageBias.MaximizeQuality, WIA.FormatID.wiaFormatBMP, False, True, False)
        Else
            F = CD.ShowTransfer(item, WIA.FormatID.wiaFormatPNG, False)
        End If

        Dim myBuffer As Byte() = F.FileData.BinaryData
        Return myBuffer
    Catch ex As Exception

        MsgBox(ex.Message)
        Return Nothing
    End Try
End Function

【讨论】:

  • 解释一下你的答案
猜你喜欢
  • 2011-09-01
  • 2017-05-05
  • 1970-01-01
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多