2008-08-12 8 views
21

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 y a quelques exemples de projets sur CodeProject, etc. Cependant, après avoir téléchargé chacun d'entre eux que je peux trouver, j'ai rencontré un problème.Utilisation de C#/WIA version 2.0 sur Vista pour numériser

Dans chacun d'entre eux, la référence à WIALib est rompue. Quand 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 va l'exécuter) est 2.0.

Malheureusement, chacun de ces exemples de projets semble avoir été codé contre 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. Y at-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?

+0

question rapide. Avez-vous absolument besoin de WIA? Ou pouvez-vous vous débrouiller avec Twain? Si Twain est OK, je pourrais avoir du code à donner. –

Répondre

21

Pour accéder à WIA, vous devez ajouter une référence à la bibliothèque COM, «Bibliothèque d'acquisition d'images Microsoft Windows v2.0» (wiaaut.dll). ajoutez un "using 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; 

(System.Drawing)

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

Cest un moyen de base, fonctionne avec mon chargeur à plat/doc. Si vous avez besoin de plus d'un document/page à la fois, il y a probablement une meilleure façon de le faire (d'après ce que j'ai pu voir, cela ne gère qu'une image à la fois, même si je ne suis pas entièrement sûr). Bien qu'il s'agisse d'un document WIA v1, le Coding4Fun article on WIA de Scott Hanselman contient plus d'informations sur la façon de le faire pour plusieurs pages, je pense (je dois encore aller plus loin que ça)

Si c'est un système de bureau sans papier , vous pouvez également vérifier MODI (Office Document Imaging) pour faire tout le ROC pour vous.

+0

Je vais essayer. Je ne suis pas en train de jouer avec l'OCR parce que je n'ai vu aucun des systèmes se rapprocher assez de mes trucs pour être plus utile que de simplement faire des métadonnées et des tags décents Cela devrait me donner la plupart de ce dont j'ai besoin il est référencé, je peux creuser à travers l'API –

+5

Au lieu de ce GUID magique, vous pouvez utiliser System.Drawing.ImageFormat.Jpeg.Guid.ToString ("B"). – Lars

+5

Ou vous pouvez utiliser le guid défini dans Interop.WIA .dll. FormatID.wiaFormatJPEG –

0

Il n'a pas besoin pour être WIA. Je regardais surtout 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 chacun d'entre eux sucent (comme bloquer l'écran pendant la numérisation).

Pour la gestion de documents, je suis vraiment à la recherche de simples analyses en niveaux de gris à 200dpi, donc la plupart des choses dans les pilotes TWAIN sont exagérées. Cela dit, demander ici faisait partie de ma dernière tentative pour comprendre comment le faire dans WIA avant de passer à TWAIN.

0

Une autre remarque: vous devez télécharger la DLL WIA 2.0 sur Microsoft.com, puis parcourir la dll et l'ajouter à votre projet.

1

Mise à jour: J'ajoute ce séparément depuis sa une réponse différente (un an plus tard). J'ai appris que XP a WIA 1.0 et Vista en avant a WIA2.0. Vous pouvez cependant installer WIA 2.0 pour Windows XP SP1 + à partir du here.

Je puis également fait une petite bibliothèque avec le code que je trouve quelque part sur l'interweb ici, il a aussi la possibilité de numériser plusieurs pages: http://adfwia.codeplex.com/

Questions connexes