Уведомления

Группа в Telegram: @pythonsu

#1 Июль 24, 2017 10:00:57

Pluto
Зарегистрирован: 2012-05-29
Сообщения: 177
Репутация: +  1  -
Профиль   Отправить e-mail  

Работа со сканером. Чем можно воспользоваться? Нашёл только pytwain, но не могу разобраться.

Так-с! Вроде заработало. Хотя, не совсем понял что я вообще сделал-то. Вот ведь как жить-то “интересно” с этим чудным модулем. Заставил работать, но сам не понял как.

Офлайн

#2 Июль 24, 2017 12:53:58

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Работа со сканером. Чем можно воспользоваться? Нашёл только pytwain, но не могу разобраться.

Pluto
Н-да. И в этой, типа поправленной версии, даже их собственный пример (simple_tk.py) не может сделать повторное сканирование.
для инициализации повторного скана из скритпта нужно закрыть и снова открыть источник, это если у вас податчик планшет, а если ADF то нужно использовать source.acquire_natively. Оно тогда откроет окошко драйвера, где можно указать параметры сканирования и источник.
На вход source.acquire_natively нужно подать две калбек функции, after и before вида: def before(img_info):… и def after(twainImage, more):
Сам модуль дергает функцию before каждый раз перед началом сканирования очередного листа из автоподатчика, и передает в img_info параметры сканируемой картинки: дипиай, разрешение, цветность и ТД… После окончания сканирования каждого листа он дергает after передавая в twainImage инстанс класа twain._Image, из которого можно полчить картинку методом save( мне кажеться оно не сработает судя по исходникам, будет ругаться на self._lock, self._unlock) или twain.DIBToBMFile(twainImage._handle) . И count - это число означаюее ХЗ что, но если count вернуло 0 то больше страниц не осталось в автоподатчике.

Чтобы оно коррекно работало, нужно вначале в sm = twain.SourceManager(mainWindow) в mainWindow передать ссылку на главное окно, поскольку сам модуль не помает pyQT то придеться получать корректный хендл окна вашей программы через win32gui.EnumWindows()
ХЗ может можно реализовать сканирование из автоподатчика без открытия окна с настройками, но для этого нужно усердно курить исходники самого модуля и спецификацию протокола TWAIN



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июль 24, 2017 12:54:42)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version