Scanner mit VisualBasic programmieren
Author D. Selzer-McKenzie
Youtube-Video: https://youtu.be/g-R3CFEc5fw
Der SourceCode steht zwasr hier in der Videobeschreibung,
könnte aber defekt sein, da er Steuerzeichen enthält die
von Youtube nicht angenommen werden. Deshaslb finden
Sie den SourceCode auch nochmals im Forum
http://Outbackbrumby.Blogspot.com
Hier der Sourcecode auch für gleichzeitige Bild- und
Farbearbeitung:
Private Sub frmTools_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'für Scanner
dm = New WIA.DeviceManager()
dm.RegisterEvent(wiaEventDeviceConnected, "*")
dm.RegisterEvent(wiaEventDeviceDisconnected, "*")
AddHandler dm.OnEvent, AddressOf dm_OnEvent
anzeige()
End Sub
Private Sub anzeige()
Dim dev As WIA.Device
ListBoxScannerListBoxZwei.Items.Clear()
For Each di As WIA.DeviceInfo In dm.DeviceInfos
dev = di.Connect()
' Konnte eine Instanz gebildet werden, wird der Name des Geräts in die Liste eingetragen:
If dev IsNot Nothing Then ListBoxScannerListBoxZwei.Items.Add(di.Properties("Name").Value)
Next di
'Die Schaltflächen unserer Anwendung werden nur freigegeben, wenn mindestens ein Gerät installiert ist:
ButtonScannenGeraeteEigenschaften.Enabled = ListBoxScannerListBoxZwei.Items.Count > 0
ButtonScannenEinscannenUeberDatei.Enabled = ListBoxScannerListBoxZwei.Items.Count > 0
ButtonScannenEinscannen.Enabled = ListBoxScannerListBoxZwei.Items.Count > 0
ButtonScannenUeberSpeicher.Enabled = ListBoxScannerListBoxZwei.Items.Count > 0
If ListBoxScannerListBoxZwei.Items.Count > 0 Then ListBoxScannerListBoxZwei.SelectedIndex = 0
End Sub
Private Sub dm_OnEvent(EventID As String, DeviceID As String, ItemID As String)
If EventID = wiaEventDeviceDisconnected Then
ListBoxScannerListBox1.Items.Add("Gerät getrennt")
End If
If EventID = wiaEventDeviceConnected Then
ListBoxScannerListBox1.Items.Add("Gerät angeschlossen")
End If
anzeige()
End Sub
Private Sub ButtonScannenGeraeteEigenschaften_Click(sender As Object, e As EventArgs) Handles ButtonScannenGeraeteEigenschaften.Click
Dim dev As WIA.Device
Dim dlg As New WIA.CommonDialog()
' Zunächst wird eine Device-Instanz erzeugt (ist dem physischen Gerät zugeordnet):
dev = dm.DeviceInfos(ListBoxScannerListBoxZwei.SelectedIndex + 1).Connect()
dlg.ShowDeviceProperties(dev)
dev = dm.DeviceInfos(ListBoxScannerListBoxZwei.SelectedIndex + 1).Connect()
For Each prop As WIA.Property In dev.Properties
ListBoxScannerListBox1.Items.Add(prop.Name & ": " & prop.Value)
Next prop
End Sub
Private Sub ButtonScannenEinscannenUeberDatei_Click(sender As Object, e As EventArgs) Handles ButtonScannenEinscannenUeberDatei.Click
Dim dlg As New WIA.CommonDialog()
Dim img As WIA.ImageFile
' Anzeige des Dialogs:
img = dlg.ShowAcquireImage()
' Der Rückgabewert ist ein ImageFile-Objekt, dessen Dateiformat Sie über die FileExtension-Eigenschaft in Erfahrung bringen können.
Dim TempFileName As String = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()) & "." & img.FileExtension
img.SaveFile(TempFileName)
Using fs As New FileStream(TempFileName, FileMode.Open, FileAccess.Read)
PictureBoxScannenAusgabeScan.Image = Image.FromStream(fs)
fs.Close()
End Using
File.Delete(TempFileName)
End Sub
Private Sub ButtonScannenUeberSpeicher_Click(sender As Object, e As EventArgs) Handles ButtonScannenUeberSpeicher.Click
Dim dlg As New WIA.CommonDialog()
Dim img As WIA.ImageFile
' Anzeige des Dialogs:
img = dlg.ShowAcquireImage()
Dim v As WIA.Vector = img.FileData
Dim bytes() As Byte = CType(v.BinaryData(), Byte())
Dim ms As New MemoryStream(bytes)
PictureBoxScannenAusgabeScan.Image = Image.FromStream(ms)
End Sub
Private Sub ButtonScannenScanDrucken_Click(sender As Object, e As EventArgs) Handles ButtonScannenScanDrucken.Click
Dim dlg As New WIA.CommonDialog()
If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
dlg.ShowPhotoPrintingWizard(OpenFileDialog1.FileName)
Else
MessageBox.Show("Kein Bild gewählt!")
End If
End Sub
Private Sub ButtonScannenEinscannen_Click(sender As Object, e As EventArgs) Handles ButtonScannenEinscannen.Click
Dim dev As WIA.Device
Dim dlg As New WIA.CommonDialog()
dev = dm.DeviceInfos(ListBoxScannerListBoxZwei.SelectedIndex + 1).Connect()
' Nur wenn es sich um einen Scanner handelt, wird der Dialog angezeigt:
If dev.Type = WIA.WiaDeviceType.ScannerDeviceType Then
dlg.ShowAcquisitionWizard(dev)
Else
MessageBox.Show("Kein Scanner vohanden!")
End If
End Sub
Private Sub ButtonScannenScanKonvertieren_Click(sender As Object, e As EventArgs) Handles ButtonScannenScanKonvertieren.Click
Dim dlg As New WIA.CommonDialog()
Dim img As New WIA.ImageFile()
Dim proc As WIA.ImageProcess
If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
img.LoadFile(OpenFileDialog1.FileName)
proc = New WIA.ImageProcess()
proc.Filters.Add(proc.FilterInfos("Convert").FilterID)
proc.Filters(1).Properties("FormatID").Value = wiaFormatTIFF
img = proc.Apply(img)
'img.SaveFile("c:\1\ScanBild.tiff") 'muss noch "1" programmiert werden
End If
End Sub
Private Sub ButtonScannenFilterAnzeigen_Click(sender As Object, e As EventArgs) Handles ButtonScannenFilterAnzeigen.Click
Dim proc As New WIA.ImageProcess()
For Each fil As WIA.FilterInfo In proc.FilterInfos
ListBoxScannerListBox1.Items.Add(fil.Name)
Next fil
End Sub
Sonntag, 16. Oktober 2016
Abonnieren
Kommentare zum Post (Atom)
Keine Kommentare:
Kommentar veröffentlichen
Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.