myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
   » Plugin für Firefox
   » Plugin für IE
   » Gadget für Windows
» Regeln
» Wie poste ich richtig?
» Datenschutzerklärung
» wbb-FAQ

Mitglieder
» Liste / Suche
» Stadt / Anleitung dazu
» Wer ist wo online?

Angebote
» ASP.NET Webspace
» Bücher
» Zeitschriften
   » dot.net magazin

Ressourcen
» guide to C#
» openbook: Visual C#
» openbook: OO
» MSDN Webcasts
» Search.Net

Team
» Kontakt
» Übersicht
» Wir über uns
» Impressum

» Unsere MiniCity
MiniCity
» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Rund um die Programmierung » WIA Scanning mit Feeder: Gescanntes Image enthält nur Deckblatt/erste Seite
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

WIA Scanning mit Feeder: Gescanntes Image enthält nur Deckblatt/erste Seite

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
SteWo81 SteWo81 ist männlich
myCSharp.de-Mitglied

Dabei seit: 03.03.2017
Beiträge: 3
Entwicklungsumgebung: Visual Studio 2015


SteWo81 ist offline

WIA Scanning mit Feeder: Gescanntes Image enthält nur Deckblatt/erste Seite

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo liebe Community,

ihr habe eine Scanmöglichkeit gebaut. Man kann vorher auswählen, ob man via FlatBed oder via Feeder scannen möchte. Das Scannen generell klappt bis auf das Problem, dass beim Scannen via Feeder bei mehrseitigen Dokumenten alles eingezogen wird, jedoch das Result-Image nur die erste Seite beinhaltet.

C#-Code:
this.ScannerDevice = WiaDevice.FromUserDialog().AsScannerDevice();

setzt das Scannerdevice über den Dialog.

C#-Code:
//Scanvorgang vorbereiten
InitScan();
// Scanvorgang durchführen
List<Image> images = this.ScannerDevice.PerformScan(FormatID.wiaFormatTIFF).ToList();

private void InitScan()
        {
            // Einstellungen für das Scanner-Gerät
            this.ScannerDevice.DeviceSettings.DocumentHandlingSelect = this.DocumentHandlingSelect;
            this.ScannerDevice.DeviceSettings.Pages = (this.ScannerDevice.DeviceSettings.DocumentHandlingSelect == DocumentHandlingSelect.Duplex) ? 2 : 1;

            // Einstellungen für das Scandokument
            this.ScannerDevice.PictureSettings.CurrentIntent = this.CurrentIntent;
            this.ScannerDevice.PictureSettings.HorizontalResolution = this.Resolution;
            this.ScannerDevice.PictureSettings.VerticalResolution = this.Resolution;
            this.ScannerDevice.PictureSettings.HorizontalExtent = (int)(this.DocumentSize.Width * this.Resolution);
            this.ScannerDevice.PictureSettings.VerticalExtent = (int)(this.DocumentSize.Height * this.Resolution);
            this.ScannerDevice.PictureSettings.Threshold = this.Threshold; ;
        }

Initialisiert den Scanvorgang und ruft Methode zum Scannen auf.

C#-Code:
public void PerformScan(string formatID)
{
ImageFile imageFile = this.Device.Items[1].Transfer(formatID);

            ImageFile argbImage = imageFile.ARGBData.get_ImageFile(imageFile.Width, imageFile.Height);

            Image result = Image.FromStream(new MemoryStream((byte[])argbImage.FileData.get_BinaryData()));

            return ScannerDevice.ExtractImages(imageFile);
        }

/// <summary>
        /// Liest alle Bilder aus dem angegebenen ImageFile-Objekt aus
        /// </summary>
        /// <param name="imageFile">das ImageFile-Objekt, dessen enthaltene Bilder ausgelesen werden sollen</param>
        /// <returns>eine Auflistung der Bilder, die das ImageFile-Objekt enthält</returns>
        private static IEnumerable<Image> ExtractImages(ImageFile imageFile)
        {
            for (int frame = 1; frame <= imageFile.FrameCount; frame++)
            {
                imageFile.ActiveFrame = frame;
                ImageFile argbImage = imageFile.ARGBData.get_ImageFile(imageFile.Width, imageFile.Height);

                Image result = Image.FromStream(new MemoryStream((byte[])argbImage.FileData.get_BinaryData()));
                yield return result;
            }
        }

Scannen wird ausgeführt und die Liste der Images (Seiten), die gescannt wurden zurück.

Leider ist imageFile.FrameCount immer = 1.
Könnte mir jemand helfen und sagen, warum?
Was mache ich falsch?


Viele Grüße
SteWo81
20.03.2017 13:20 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Sir Rufo Sir Rufo ist männlich
myCSharp.de-Mitglied

images/avatars/avatar-3523.jpeg


Dabei seit: 06.07.2014
Beiträge: 599
Entwicklungsumgebung: Visual Studio 2015
Herkunft: Stadthagen


Sir Rufo ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

20.03.2017 13:37 Beiträge des Benutzers | zu Buddylist hinzufügen
SteWo81 SteWo81 ist männlich
myCSharp.de-Mitglied

Dabei seit: 03.03.2017
Beiträge: 3
Entwicklungsumgebung: Visual Studio 2015

Themenstarter Thema begonnen von SteWo81

SteWo81 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Sir Rufo, danke für den Link. hab es auf die Methodik mal umgebaut.
Leider zieht der Feeder alle Seiten ein, erstellt aber nur 1 Image. Der Rest des
Dokuments wird leider ignoriert.

Wenn ich den Scanner am Gerät selbst nutze erzeugt dieser ja auch ein pdf mit mehr Seiten.

Habt ihr noch weitere Tipps für mich?
20.03.2017 14:30 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
SteWo81 SteWo81 ist männlich
myCSharp.de-Mitglied

Dabei seit: 03.03.2017
Beiträge: 3
Entwicklungsumgebung: Visual Studio 2015

Themenstarter Thema begonnen von SteWo81

SteWo81 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Habe es nach obigen Link umgesetzt, jedoch zieht der Feeder alle Seiten direkt ein und nach dem zweiten mal ShowTransfer() kommt die Fehlermeldung "Das Gerät ist noch beschäftigt" (WiaError.Busy)

Wie kann ich dieses Problem beheben?

Wäre für jeden Tipp dankbar.


Viele Grüße
05.04.2017 16:03 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 2 Monate.
Der letzte Beitrag ist älter als ein Monat.
Antwort erstellen


© Copyright 2003-2017 myCSharp.de-Team. Alle Rechte vorbehalten. 24.05.2017 19:45