2008-08-12 16 views
21

Tôi muốn triển khai hệ thống nộp hồ sơ không cần giấy tờ và đang tìm cách sử dụng WIA với C# để thu thập hình ảnh. Có một vài dự án mẫu trên CodeProject, vv Tuy nhiên, sau khi tải xuống từng dự án mà tôi có thể tìm thấy, tôi đã gặp sự cố.Sử dụng C#/WIA phiên bản 2.0 trên Vista để Quét

Trong mỗi và mọi người trong số họ, tham chiếu đến WIALib bị hỏng. Khi tôi đi để thêm "Microsoft Windows Image Acquisition" làm tài liệu tham khảo, phiên bản duy nhất có sẵn trên máy trạm phát triển của tôi (cũng là máy chạy nó) là 2.0.

Thật không may, mỗi một trong các dự án mẫu này dường như đã được mã hóa với 1.x. Tham chiếu đi vào dưới dạng "WIA" thay vì "WIALib". Tôi đã chụp, chỉ cần thay đổi nhập khẩu không gian tên, nhưng rõ ràng API là khác nhau đáng kể.

Có thông tin nào về việc triển khai v2.0 hay nâng cấp một trong các dự án mẫu hiện có này không?

+0

câu hỏi nhanh. Bạn có hoàn toàn cần WIA? Hoặc bạn có thể nhận được bằng với Twain? Nếu Twain là OK tôi có thể có một số mã để tặng. –

Trả lời

21

Để truy cập WIA, bạn cần phải thêm tham chiếu vào thư viện COM, "Thư viện chuyển đổi hình ảnh Microsoft Windows v2.0" (wiaaut.dll). thêm "sử dụng 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) 

Thats một cách cơ bản, làm việc với feeder phẳng/doc tôi. Nếu bạn cần nhiều hơn một tài liệu/trang tại một thời điểm, có lẽ một cách tốt hơn để làm điều đó (từ những gì tôi có thể thấy, điều này chỉ xử lý một hình ảnh tại một thời điểm, mặc dù tôi không hoàn toàn chắc chắn). Trong khi đó là tài liệu WIA v1, số Coding4Fun article on WIA của Scott Hanselman có chứa một số thông tin khác về cách thực hiện nó cho nhiều trang, tôi nghĩ (tôi vẫn chưa đi xa hơn bản thân mình)

Nếu hệ thống văn phòng không cần giấy tờ , bạn có thể cũng muốn kiểm tra MODI (Office Document Imaging) để làm tất cả các OCR cho bạn.

+0

Tôi sẽ chụp ảnh này. Tôi không phải mớ hỗn độn với OCR vì tôi chưa thấy bất kỳ hệ thống nào nhận được bất cứ nơi nào đủ gần để các công cụ của tôi trở nên hữu ích hơn là chỉ cần thực hiện một số siêu dữ liệu và gắn thẻ phong nha. nó được tham chiếu, tôi có thể đào qua API 1. –

+5

Thay vì GUID ma thuật, bạn có thể sử dụng System.Drawing.Imaging.ImageFormat.Jpeg.Guid.ToString ("B"). – Lars

+5

Hoặc bạn có thể sử dụng guid được định nghĩa trong Interop.WIA Định dạng ID.wiaFormatJPEG –

0

Nó không cần để là WIA. Tôi chủ yếu xem xét thiết lập WIA vì nó cung cấp cùng một giao diện cơ bản cho các máy quét khác nhau. Tôi đã có 3 máy quét trên máy này và các trình điều khiển/phần mềm TWAIN cho tất cả chúng đều hút (như chặn màn hình trong quá trình quét).

Để quản lý tài liệu, tôi thực sự đang tìm kiếm các bản quét màu xám 200dpi đơn giản, vì vậy hầu hết nội dung trong trình điều khiển TWAIN là quá mức cần thiết.

Điều đó nói rằng, yêu cầu ở đây là một phần nỗ lực cuối cùng của tôi để tìm hiểu cách thực hiện điều đó trong WIA trước khi chuyển sang TWAIN.

0

Lưu ý khác: Bạn phải tải xuống WIA 2.0 dll từ Microsoft.com và sau đó duyệt đến dll và thêm nó vào dự án của bạn.

1

Làm cách nào để nhắm mục tiêu WIA 1.0 cũng để bạn có thể chuyển ứng dụng của mình sang Windows Xp. Một cái gì đó tôi đã tuyệt vọng tìm kiếm !! How to develop using WIA 1 under Vista?

1

Cập nhật: Tôi sẽ thêm riêng biệt câu trả lời này vì câu trả lời khác (một năm sau). Tôi đã học được XP có WIA 1.0 và Vista trở đi có WIA2.0. Tuy nhiên, bạn có thể cài đặt WIA 2.0 cho Windows XP Sp1 + từ here.

tôi sau đó cũng thực hiện một thư viện nhỏ với mã tôi tìm thấy ở đâu đó trên interweb đây, nó cũng có khả năng quét nhiều trang: http://adfwia.codeplex.com/

Các vấn đề liên quan