Использование C # / WIA версии 2.0 в Vista для сканирования

Я хочу внедрить систему безбумажной регистрации и хотел использовать WIA с C # для получения изображений. Существует множество примеров проектов на CodeProject и т. Д. Однако после загрузки каждого из них, который я могу найти, я столкнулся с проблемой.

В каждом из них ссылка на WIALib не работает. Когда я иду, чтобы добавить «Microsoft Windows Image Acquisition» в качестве ссылки, единственная версия, доступная на моей рабочей станции разработки (также машина, которая будет запускать это), является 2.0.

К сожалению, каждый из этих примеров проектов, по-видимому, был закодирован против 1.x. Ссылка идет как "WIA" вместо "WIALib". Я сделал снимок, просто изменив импорт пространства имен, но явно API сильно отличается.

Есть ли какая-либо информация о реализации v2.0 или об обновлении одного из этих существующих примеров проектов?

12.08.2008 15:28:34
Быстрый вопрос. Вам абсолютно нужна WIA? Или ты можешь обойтись с Твеном? Если с Твеном все в порядке, у меня может быть код для пожертвования.
Shawn Miller 12.08.2008 15:48:18
5 ОТВЕТОВ
РЕШЕНИЕ

Чтобы получить доступ к 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, статья Скотта Хансельмана о CIA4Fun на WIA содержит больше информации о том, как сделать это на нескольких страницах, я думаю (я пока сам не пойду дальше, чем это)

Если это для безбумажной офисной системы, вы можете также проверить MODI (Office Document Imaging), чтобы сделать все OCR для вас.

22
20.09.2008 11:39:40
Я сделаю это. Я не связываюсь с OCR, потому что я не видел, чтобы ни одна из систем не подходила достаточно близко к моим материалам, чтобы быть более полезной, чем просто делать какие-то приличные метаданные и пометки. Это должно дать мне большую часть того, что мне нужно, как только на него ссылаются Я могу копаться в API.
J Wynia 21.09.2008 18:17:16
Вместо этого магического GUID вы можете использовать System.Drawing.Imaging.ImageFormat.Jpeg.Guid.ToString ("B").
Lars 24.03.2009 18:49:24
Или вы можете использовать guid, определенный в Interop.WIA.dll. FormatID.wiaFormatJPEG
Greg Dean 23.04.2009 20:11:57
Приведенный выше код вызовет исключение с сообщением «Exception from HRESULT: 0x80210015», если нет доступных доступных устройств WIA. Вы можете проверить устройства, используя: WIA.DeviceManagerClass wiaDM = new DeviceManagerClass (); if (wiaDM == null || wiaDM.DeviceInfos == null || wiaDM.DeviceInfos.Count == 0) // Нет устройств
Steve Hiner 2.05.2011 23:20:59

Это не должно быть WIA. В основном я смотрел на настройку WIA, потому что она предлагает один и тот же базовый интерфейс для разных сканеров. У меня есть 3 сканера на этой машине и драйверы / программное обеспечение TWAIN для них все отстой (например, блокировка экрана во время сканирования).

Для управления документооборотом я действительно ищу простое сканирование в оттенках серого с разрешением 200 точек на дюйм, поэтому большая часть драйверов TWAIN излишня.

Тем не менее, задание здесь было частью моей последней попытки выяснить, как это сделать в WIA, прежде чем перейти к TWAIN.

0
12.08.2008 16:28:10

Еще одно примечание: вам нужно скачать WIA 2.0 dll с Microsoft.com, а затем перейти к dll и добавить его в свой проект.

0
28.09.2008 15:47:17

Вот как нацеливаться на WIA 1.0, чтобы вы могли отправить свое приложение на Windows Xp. Что-то, что я отчаянно искал !! Как разработать с использованием WIA 1 под Vista?

1
23.05.2017 10:27:43

Обновление : я добавляю это отдельно, так как это другой ответ (год спустя). Я узнал, что в XP есть WIA 1.0, а в Vista - WIA2.0. Однако вы можете установить WIA 2.0 для Windows XP Sp1 + здесь .

Затем я также сделал небольшую библиотеку с кодом, который я нашел где-то здесь, во внутренней сети, он также может сканировать несколько страниц: http://adfwia.codeplex.com/

1
2.09.2011 05:57:01