Vista पर स्कैन करने के लिए सी #/डब्ल्यूआईए संस्करण 2.0 का उपयोग करना

मैं एक पेपरलेस फाइलिंग सिस्टम को कार्यान्वित करना चाहता हूं और छवि अधिग्रहण के लिए सी # के साथ डब्ल्यूआईए का उपयोग करना चाहता था। CodeProject, आदि पर कुछ नमूना परियोजनाएं हैं। हालांकि, उनमें से प्रत्येक को डाउनलोड करने के बाद, मुझे एक समस्या है।

उनमें से प्रत्येक में, WIALib का संदर्भ टूट गया है। जब मैं एक संदर्भ के रूप में "माइक्रोसॉफ्ट विंडोज छवि अधिग्रहण" जोड़ने के लिए जाता हूं, तो मेरे विकास वर्कस्टेशन (यह भी मशीन जो इसे चलाएगी) पर उपलब्ध एकमात्र संस्करण 2.0 है।

दुर्भाग्यवश, इन नमूना परियोजनाओं में से प्रत्येक को 1.x के खिलाफ कोड किया गया प्रतीत होता है। संदर्भ "WIALib" के बजाय "WIA" के रूप में चला जाता है। मैंने एक शॉट लिया, बस नामस्थान आयात बदल रहा है, लेकिन स्पष्ट रूप से एपीआई काफी अलग है।

क्या v2.0 को लागू करने या इन मौजूदा नमूना परियोजनाओं में से किसी एक को अपग्रेड करने पर कोई जानकारी है?

0
ro fr bn
त्वरित प्रश्न। क्या आपको पूरी तरह से डब्ल्यूआईए की आवश्यकता है? या आप ट्वेन के साथ मिल सकता है? यदि ट्वेन ठीक है तो मेरे पास दान करने के लिए कुछ कोड हो सकता है।
जोड़ा लेखक Shawn Miller, स्रोत

4 उत्तर

यह WIA होने के लिए आवश्यकता नहीं है। मैं ज्यादातर डब्ल्यूआईए सेटअप को देख रहा था क्योंकि यह विभिन्न स्कैनरों के लिए एक ही बुनियादी इंटरफ़ेस प्रदान करता है। मुझे इस मशीन पर 3 स्कैनर मिल गए हैं और उन सभी के लिए TWAIN ड्राइवर/सॉफ़्टवेयर चूसते हैं (जैसे स्कैनिंग के दौरान स्क्रीन को अवरुद्ध करना)।

दस्तावेज़ प्रबंधन के लिए, मैं वास्तव में साधारण 200 डीपीआई ग्रेस्केल स्कैन की तलाश में हूं, इसलिए TWAIN ड्राइवरों में से अधिकांश चीजें अधिक है।

उस ने कहा, यहां पूछने के लिए मेरे अंतिम प्रयास का हिस्सा था कि इसे दो बार आगे बढ़ने से पहले डब्ल्यूआईए में कैसे किया जाए।

0
जोड़ा

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
जोड़ा

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
जोड़ा

डब्ल्यूआईए तक पहुंचने के लिए, आपको COM लाइब्रेरी, "माइक्रोसॉफ्ट विंडोज इमेज अधिग्रहण लाइब्रेरी v2.0" (wiaaut.dll) का संदर्भ जोड़ना होगा। "डब्ल्यूआईए का उपयोग करके" जोड़ें

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)

एक मूल तरीका है, मेरे flatbed/डॉक्टर फीडर के साथ काम करता है। यदि आपको एक समय में एक से अधिक दस्तावेज़/पृष्ठ की आवश्यकता है, तो ऐसा करने का शायद एक बेहतर तरीका है (जो मैं देख सकता था, यह एक समय में केवल एक छवि को संभालता है, हालांकि मुझे पूरी तरह से यकीन नहीं है)। हालांकि यह एक डब्ल्यूआईए v1 डॉक्टर है, स्कॉट हैनसेलमैन के डब्ल्यूआईए पर कोडिंग 4Fun लेख में एकाधिक पृष्ठों के लिए इसे कैसे करें, इस बारे में कुछ और जानकारी है, मुझे लगता है (मुझे अभी तक खुद से आगे जाना है)

यदि यह एक पेपरलेस कार्यालय प्रणाली के लिए है, तो आप अपने लिए सभी ओसीआर करने के लिए MODI (Office दस्तावेज़ इमेजिंग) भी देख सकते हैं।

0
जोड़ा
मैं इसे एक शॉट दूंगा। मैं ओसीआर के साथ गड़बड़ नहीं कर रहा हूं क्योंकि मैंने देखा है कि किसी भी सिस्टम को मेरी सामग्री पर कहीं भी करीब कुछ अच्छा नहीं मिला है, बस कुछ सभ्य मेटाडाटा और टैगिंग करने से ज्यादा उपयोगी है। इससे मुझे सबसे ज्यादा संदर्भ देना चाहिए , मैं एपीआई के माध्यम से खोद सकते हैं।
जोड़ा लेखक J Wynia, स्रोत
या आप Interop.WIA.dll में परिभाषित guid का उपयोग कर सकते हैं। FormatID.wiaFormatJPEG
जोड़ा लेखक Greg Dean, स्रोत
उस जादू GUID के बजाय आप System.Drawing.Imaging.ImageFormat.Jpeg.Guid.ToString ("B") का उपयोग कर सकते हैं।
जोड़ा लेखक Lars, स्रोत
उपर्युक्त कोड किसी भी वैध WIA डिवाइस उपलब्ध नहीं होने पर "HRESULT: 0x80210015 से अपवाद" संदेश के साथ अपवाद फेंक देगा। आप इसका उपयोग कर डिवाइसों की जांच कर सकते हैं: WIA.DeviceManagerClass wiaDM = new DeviceManagerClass (); अगर (wiaDM == null || wiaDM.DeviceInfos == null || wiaDM.DeviceInfos.Count == 0)//कोई डिवाइस नहीं
जोड़ा लेखक Steve Hiner, स्रोत