我的任务是创建一个文档数字化程序,因为公司的边界很糟糕。这不好。特别糟糕。经过一些研究,我开始了一个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基本上是用户给出的名称。问题是这段代码只扫描一个页面,如何在同一个文件/单独的文件中保存多个? (无论哪个效果最好)。
与上一个问题的精神相同,是否有办法将这些文件转换为JPEG / PNG(BMP占用大量空间),或者如果用户愿意,甚至可以将它们转换为PDF文件? / p>
如何在扫描后显示扫描的图片?
我使用的是VB.NET和WPF(不是Forms)。任何回复将不胜感激:)。
编辑:最近我用http://forums.codeguru.com/showthread.php?439027-Windows-Image-Acquisition-%28WIA%29-Code设法进行多次ADF扫描。我将C#转换为VB,但代码会在编译器中抛出错误。
答案 0 :(得分: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