Utilizând C #/WIA versiunea 2.0 pe Vista pentru scanare

Vreau să pun în aplicare un sistem de depozitare fără hârtie și căutam să folosesc WIA cu C# pentru achiziția de imagini. Există destul de multe proiecte de probă pe CodeProject, etc. Cu toate acestea, după ce am descărcat fiecare dintre ele pe care îl pot găsi, am dat o problemă.

În fiecare dintre ele, referința la WIALib este întreruptă. Când mă duc să adaug "referință de referință pentru Microsoft Windows Image Acquisition", singura versiune disponibilă pe stația mea de lucru pentru dezvoltare (de asemenea, mașina care o va executa) este 2.0.

Din nefericire, fiecare dintre aceste proiecte de probă pare să fi fost codificate față de 1.x. Referința se referă la "WIA" în loc de "WIALib". Am făcut o șansă, schimbând doar importul spațiului de nume, dar în mod clar API-ul este drastic diferit.

Există informații despre implementarea v2.0 sau despre actualizarea uneia dintre proiectele de eșantioane existente acolo?

0
fr hi bn
Intrebare rapida. Aveți absolut nevoie de WIA? Sau puteți ajunge cu Twain? Dacă Twain este în regulă, s-ar putea să am ceva cod de donat.
adăugat autor Shawn Miller, sursa

4 răspunsuri

Nu are nevoie de pentru a fi WIA. Mă uitam mai ales la setarea WIA deoarece oferă aceeași interfață de bază pentru scanere diferite. Am 3 scanere pe această mașină și driverele/software-ul TWAIN pentru toate acestea suge (cum ar fi blocarea ecranului în timpul scanării).

Pentru gestionarea documentelor, eu chiar caut scanări simple de 200dpi în tonuri de gri, astfel încât cele mai multe lucruri din driverele TWAIN sunt exagerate.

Acestea fiind spuse, întrebarea aici făcea parte din ultima mea încercare de a-mi da seama cum să o fac în WIA înainte de a trece la TWAIN.

0
adăugat

Heres how to target WIA 1.0 also so you can ship your app to Windows Xp. Something I was desperately looking for!! How to develop using WIA 1 under Vista?

0
adăugat

Update: I'm adding this separately since its a different answer (a year later). I learnt XP has WIA 1.0 and Vista onward has WIA2.0. You can however install WIA 2.0 for Windows XP Sp1+ from here.

I then also made a small library with code I found somewhere on the interweb here, it also has the ability to scan multiple pages: http://adfwia.codeplex.com/

0
adăugat

Pentru a accesa WIA, va trebui să adăugați o referință la biblioteca COM, "Microsoft Windows Image Acquisition Library v2.0" (wiaaut.dll). adăugați un "utilizând 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)

Acesta este un mod de bază, funcționează cu alimentatorul meu plat/doc. Dacă aveți nevoie de mai mult de un document/pagină la un moment dat, probabil că există o modalitate mai bună de a face acest lucru (din câte am văzut, acest lucru se ocupă doar de o imagine la un moment dat, deși nu sunt complet sigur). Deși este un document WIA v1, articolul Coding4Fun despre WIA conține mai multe informații despre modul de a face acest lucru pentru mai multe pagini, cred că (încă nu am de gând să merg mai departe decât mine)

În cazul în care pentru un sistem de birou fără hârtie, ați putea dori, de asemenea, verificați MODI (Office Document Imaging) pentru a face toate OCR pentru tine.

0
adăugat
O să fac o lovitură. Nu mă confrunt cu OCR pentru că nu am văzut niciunul dintre sisteme nu a ajuns destul de aproape de lucrurile mele pentru a fi mai util decât să facă doar niște metadate decente și tagging.Acest lucru ar trebui să-mi dea cea mai mare parte a ceea ce am nevoie ca o dată este citat , Pot sape prin API.
adăugat autor J Wynia, sursa
Sau puteți utiliza guidul definit în Interop.WIA.dll. FormatID.wiaFormatJPEG
adăugat autor Greg Dean, sursa
În loc de GUID-ul magic, puteți utiliza System.Drawing.Imaging.ImageFormat.Jpeg.Guid.ToString ("B").
adăugat autor Lars, sursa
Codul de mai sus va arunca o excepție cu mesajul "Excepție de la HRESULT: 0x80210015" dacă nu există dispozitive valide WIA valabile. Puteți verifica pentru dispozitive folosind: WIA.DeviceManagerClass wiaDM = new DeviceManagerClass (); dacă (wiaDM == null || wiaDM.DeviceInfos == null || wiaDM.DeviceInfos.Count == 0)//Nu există dispozitive
adăugat autor Steve Hiner, sursa