2013-06-03 58 views
1

我的任务是创建一个文档数字化程序,因为该公司的树枝接近可怕的。这不好。特别糟糕。经过一番研究,我开始了一个VB.NET WPF程序。我已经创建了登录部分,并在要将文件发送到的服务器中创建文件夹,并将每个文件的位置保存在SQL表中。无论如何,我基本上需要三件让我头痛的事情!如何在扫描后显示/保存多个(ADF)WIA图像

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,但代码在编译器中引发错误。

+0

如果你在做WPF,那么你宁愿做MVVM。这是获得干净的代码的最佳方式,并且执行更少的代码以获得更多结果。 –

+0

我会玩弄它。我已经习惯了这种模式的“范式”转变。 –

+0

在WPF中,无论什么时候需要N个'Items'(不管那是什么东西),都可以使用'ItemsControl'。 –

回答

0
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 
+0

解释一些关于你的答案 –