Question

Je souhaite mettre en œuvre un système de classement sans papier et je cherchais à utiliser WIA avec C# pour l'acquisition d'images.Il existe de nombreux exemples de projets sur CodeProject, etc.Cependant, après avoir téléchargé chacun d’entre eux, j’ai rencontré un problème.

Dans chacun d’entre eux, la référence à WIALib est rompue.Lorsque je vais ajouter "Microsoft Windows Image Acquisition" comme référence, la seule version disponible sur mon poste de travail de développement (également la machine qui l'exécutera) est la 2.0.

Malheureusement, chacun de ces exemples de projets semble avoir été codé par rapport à 1.x.La référence est "WIA" au lieu de "WIALib".J'ai pris une photo, en changeant simplement l'importation de l'espace de noms, mais il est clair que l'API est radicalement différente.

Existe-t-il des informations sur la mise en œuvre de la version 2.0 ou sur la mise à niveau de l'un de ces exemples de projets existants ?

Était-ce utile?

La solution

Pour accéder à WIA, vous devrez ajouter une référence à la bibliothèque COM, « Microsoft Windows Image Acquisition Library v2.0 » (wiaaut.dll).ajoutez un « en utilisant WIA ; »

const string wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}";
CommonDialogClass wiaDiag = new CommonDialogClass();
WIA.ImageFile wiaImage = null;

wiaImage = wiaDiag.ShowAcquireImage(
        WiaDeviceType.UnspecifiedDeviceType, 
        WiaImageIntent.GrayscaleIntent, 
        WiaImageBias.MaximizeQuality, 
        wiaFormatJPEG, true, true, false);

WIA.Vector vector = wiaImage.FileData;

(Système.Dessin)

Image i = Image.FromStream(new MemoryStream((byte[])vector.get_BinaryData()));
i.Save(filename)

C'est une méthode basique, qui fonctionne avec mon chargeur à plat/doc.Si vous avez besoin de plus d'un document/page à la fois, il existe probablement une meilleure façon de le faire (d'après ce que j'ai pu voir, cela ne gère qu'une seule image à la fois, même si je n'en suis pas entièrement sûr).Bien qu'il s'agisse d'un document WIA v1, le document de Scott Hanselman Article Coding4Fun sur WIA contient quelques informations supplémentaires sur la façon de le faire pour plusieurs pages, je pense (je ne suis pas encore allé plus loin que cela moi-même)

S'il s'agit d'un système bureautique sans papier, vous souhaiterez peut-être également consulter MODI (Office Document Imaging) pour effectuer toute l'OCR à votre place.

Autres conseils

Voici comment cibler WIA 1.0 également afin de pouvoir expédier votre application sur Windows XP.Quelque chose que je cherchais désespérément !!Comment développer avec WIA 1 sous Vista ?

Mise à jour:J'ajoute ceci séparément car c'est une réponse différente (un an plus tard).J'ai appris que XP avait WIA 1.0 et que Vista avait WIA2.0.Vous pouvez cependant installer WIA 2.0 pour Windows XP Sp1+ depuis ici.

J'ai ensuite également créé une petite bibliothèque avec du code que j'ai trouvé quelque part sur l'interweb ici, elle a également la possibilité de scanner plusieurs pages :http://adfwia.codeplex.com/

Ce n'est pas le cas besoin être WIA.Je regardais principalement la configuration WIA car elle offre la même interface de base pour différents scanners.J'ai 3 scanners sur cette machine et les pilotes/logiciels TWAIN pour tous sont nuls (comme bloquer l'écran pendant la numérisation).

Pour la gestion de documents, je recherche vraiment de simples numérisations en niveaux de gris de 200 dpi, donc la plupart des éléments des pilotes TWAIN sont excessifs.

Cela dit, demander ici faisait partie de ma dernière tentative pour comprendre comment le faire dans WIA avant de passer à TWAIN.

Autre remarque :Vous devez télécharger la DLL WIA 2.0 depuis Microsoft.com, puis accéder à la DLL et l'ajouter à votre projet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top