2008-08-12 59 views
21

我想實現一個無紙化文件系統,並希望使用WIA與C#進行圖像採集。 CodeProject上有很多示例項目等等。但是,在下載了我能找到的每一個項目之後,我遇到了一個問題。在Vista上使用C#/ WIA 2.0版掃描

在他們每一個人中,對WIALib的引用都被打破了。當我添加「Microsoft Windows Image Acquisition」作爲參考時,我的開發工作站(也是運行該工具的機器)上的唯一版本是2.0。

不幸的是,這些示例項目中的每一個似乎都是針對1.x編碼的。參考文獻以「WIA」代替「WIALib」。我做了一個鏡頭,只是改變了命名空間的導入,但很明顯,API是完全不同的。

是否有關於實施v2.0或升級其中一個現有示例項目的信息?

+0

快速的問題。你絕對需要WIA嗎?或者你可以和吐溫一起過嗎?如果吐溫還好,我可能會有一些代碼要捐獻。 – 2008-08-12 15:48:18

回答

21

要訪問WIA,您需要添加對COM庫「Microsoft Windows Image Acquisition Library v2.0」(wiaaut.dll)的引用。 添加「使用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) 

這就是一個基本方式,可與我的平板/文檔進紙。如果你一次只需要一個以上的文檔/頁面,那麼可能有更好的方法來做到這一點(從我所能看到的情況來看,這隻能處理一張圖片,儘管我不完全確定)。雖然它是WIA v1文檔,但Scott Hanselman的Coding4Fun article on WIA確實包含了一些關於如何爲多個頁面執行此操作的更多信息,我認爲(我還沒有比我自己更進一步)

如果它適用於無紙辦公系統,您可能還需要查看MODI(Office Document Imaging)爲您執行所有OCR。

+0

我會給這個鏡頭。我不會搞亂OCR,因爲我沒有看到任何系統能夠在我的東西的任何地方接近足夠的地方,而不僅僅是做一些不錯的元數據和標記。 這應該給我大部分我需要的東西它被引用,我可以通過API挖掘 – 2008-09-21 18:17:16

0

它不需要需要成爲WIA。我主要是在看WIA設置,因爲它爲不同的掃描儀提供了相同的基本界面。我在這臺機器上安裝了3臺掃描儀,並且TWAIN驅動程序/軟件全部吸入(例如在掃描期間阻塞屏幕)。

對於文檔管理,我真的在尋找簡單的200dpi灰度掃描,所以TWAIN驅動程序中的大部分內容都是過量的。

這就是說,在我轉向TWAIN之前,詢問這裏是我最後一次嘗試弄清如何在WIA中做到這一點的一部分。

0

另一個注意事項:您必須從Microsoft.com下載WIA 2.0 dll,然後瀏覽到dll並將其添加到您的項目中。

1

更新:我因爲它是一個不同的答案(一年後)分別加入這一點。我瞭解到XP有WIA 1.0,Vista也有WIA2.0。但是,您可以從here安裝適用於Windows XP Sp1 +的WIA 2.0。

然後我也做了有代碼,我發現某處的interweb這裏一個小型圖書館,它還具有掃描多頁的功能: http://adfwia.codeplex.com/