我正在研究應用程序,其中我的應用程序需要以圖像格式從掃描儀獲取輸入。從連接到USB端口或串行端口的掃描儀獲取輸入.net
這是一個wpf應用程序,掃描儀連接到系統,用戶將文檔放入掃描儀並在應用程序中打印按鈕以掃描文檔,然後應用程序必須將掃描的文檔保存爲系統中的圖像。
我不想使用任何付費組件,我相信必須有一些內置的方式來從端口讀取輸入。
我正在研究應用程序,其中我的應用程序需要以圖像格式從掃描儀獲取輸入。從連接到USB端口或串行端口的掃描儀獲取輸入.net
這是一個wpf應用程序,掃描儀連接到系統,用戶將文檔放入掃描儀並在應用程序中打印按鈕以掃描文檔,然後應用程序必須將掃描的文檔保存爲系統中的圖像。
我不想使用任何付費組件,我相信必須有一些內置的方式來從端口讀取輸入。
我在哪裏工作,我們爲Windows圖像採集編寫了一個自定義包裝。這是一個非常簡單的例子,應該從用戶選擇的掃描儀中捕獲它。
//Reference "Windows Image Acquisition Library v2.0" on the COM tab.
private void Button1_Click(object sender, EventArgs e)
{
var dialog = new WIA.CommonDialog();
var file = dialog.ShowAcquireImage(WIA.WiaDeviceType.ScannerDeviceType);
file.SaveFile("C:\Temp\WIA." + file.FileExtension);
}
如果你想這樣做,而不顯示任何對話框,這裏有整齊地舉辦了名爲WIAScanner
一類的靜態函數的一些代碼真棒文章:http://miljenkobarbir.com/using-a-scanner-without-dialogs-in-net/
從物品使用的代碼,假設你有一臺掃描儀,並希望只使用一個,或者你只是想使用該系統第一臺掃描儀,你可以這樣做:
private void Button1_Click(object sender, EventArgs e)
{
var scannerIds = WIAScanner.GetDevices();
if(scannerIds.Count > 0) {
var images = WIAScanner.Scan(scannerIds[0]);
//Process the images here.
}
}
我希望這有助於。
它的工作原理。謝謝。但還有一件事是我想要的,那就是用一些我不想要的對話框來提示。選擇掃描儀並選擇圖像類型等。我如何從代碼中設置它。 – MegaMind
添加了關於如何在沒有對話框的情況下進行文章鏈接。它非常優雅和可重用的代碼。 –
我清理了我的迴應,使其更適用於普通觀衆以及您的問題。 –
您acctually有幾個選項:
1)TWAIN
這是一個API下LGPL許可證是 「調節軟件和數字成像設備之間的通信」 並運行, 看到Wikipedia 看Homepage
2)Windows圖像採集
這是微軟專有的。 「WIA平臺使成像/圖形應用程序能夠與成像硬件交互,並標準化不同應用程序和掃描儀之間的交互。」
3)圖像和掃描儀接口規範(ISIS)
它提供了一個完整的SDK用於.NET應用程序,所以可能是最有用的一個給你,但支付解決方案, 看到Wikipedia 看到Homepage
4)做你自己
如果您想自己創建通信層,則必須確保至少該設備具有有效的USB驅動程序。要訪問任何硬件,您必須引入非託管代碼(即C++),因爲大多數這些設備驅動程序都提供了C++ API,這意味着要爲基本的IO操作創建一個庫,然後爲您的應用程序創建一個c#封裝器。
檢出http:// stackoverflow。com/questions/8925763/wia-scanning-in-a-wpf-application – Rachel