|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Упрощение работы со сканером |
|
Любой язык - Упрощение работы со сканером
|
Старожил Сообщения: 345 |
Есть сканер Epson V37 и программа EPSON Scan.
Можно ли сделать так, чтобы в контекстном меню Создать был пункт Новый скан, при выборе которого в любом месте создавался бы скан с заложенными изначально настройками??? Как это можно реализовать на основе команд TWAIN?? Как считать команды, которые настроенный EPSON Scan передает сканеру??? |
|
Отправлено: 15:07, 20-11-2014 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Sisin:
Цитата Sisin:
Цитата Sisin:
Посмотрите пример работы здесь: vbscript: сканирование с заданными параметрами — Коллекция скриптов и идей — Серый форум. Что скажете? |
|||
Отправлено: 15:24, 20-11-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 345
|
Профиль | Отправить PM | Цитировать Цитата Iska:
А как в скрипте прописать правильно путь strPath2Save, чтобы скан создавался в той папке, из которой выбрали Создать - Новый скан??? Запускаю скрипт: Option Explicit Const ScannerDeviceType = 1 Const ColorIntent = 1 Const wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}" Dim objDeviceManager Dim objDeviceInfos Dim objDevice Dim objImageFile Dim objImageProcess ' Задаём характеристики изображения Dim strPath2Save = "C:\MyImage.jpg" ' Полное имя файла для сохранения Dim strFormat = wiaFormatJPEG ' Формат файла — *.jpg Dim intQuality = 85 ' Качество jpg Dim intDPI = 150 ' Разрешение — 150 dpi Dim intHorizontalSize = (210 / 25.4) * intDPI ' Размер по горизонтали — A4 Dim intVerticalSize = (297 / 25.4) * intDPI ' Размер по вертикали — A4 Set objDeviceManager = WScript.CreateObject("WIA.DeviceManager") Set objDeviceInfos = objDeviceManager.DeviceInfos If objDeviceInfos.Count > 0 Then ' Выбираем устройство для сканирования. Если оно единственное, то сие произойдёт без отображения диалога. Set objDevice = WScript.CreateObject("WIA.CommonDialog").ShowSelectDevice(ScannerDeviceType, False, False) ' Кроме того, зная DeviceID устройства, можно использовать иной способ подключения, например: 'Dim objDeviceInfo ' 'For Each objDeviceInfo In objDeviceManager.DeviceInfos ' WScript.Echo objDeviceInfo.DeviceID ' ' If objDeviceInfo.DeviceID = "{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0000" Then ' Set objDevice = objDeviceInfo.Connect ' End If 'Next If Not objDevice Is Nothing Then WScript.Echo objDevice.Properties.Item("Name") & " [" & objDevice.DeviceID & "]" WScript.Echo "Scanning..." With objDevice With .Items(1) ' Задаём требуемые характеристики изображения для сканирования With .Properties .Item("6146").Value = ColorIntent ' Цветовая модель (Current Intent) ' Разрешение… .Item("6147").Value = intDPI ' …по горизонтали (Horizontal Resolution) .Item("6148").Value = intDPI ' …по вертикали (Vertical Resolution) ' Начало области сканирования… .Item("6149").Value = 0 ' …по горизонтали (Horizontal Start Position) .Item("6150").Value = 0 ' …по вертикали (Vertical Start Position) ' Размер области сканирования… .Item("6151").Value = intHorizontalSize ' …по горизонтали (Horizontal Extent) .Item("6152").Value = intVerticalSize ' …по вертикали (Vertical Extent) End With ' Инициируем начало операции сканирования Set objImageFile = .Transfer() ' Конвертируем полученное изображение WScript.Echo "Converting..." Set objImageProcess = WScript.CreateObject("WIA.ImageProcess") With objImageProcess With .Filters .Add objImageProcess.FilterInfos("Convert").FilterID With .Item(1).Properties .Item("FormatID").Value = strFormat ' Формат изображения .Item("Quality").Value = intQuality ' Качество изображения End With End With Set objImageFile = .Apply(objImageFile) End With End With End With ' Если файл существует — предварительно удаляем его With WScript.CreateObject("Scripting.FileSystemObject") If .FileExists(strPath2Save) Then .DeleteFile strPath2Save End If End With ' Сохраняем полученное изображение objImageFile.SaveFile strPath2Save WScript.Echo "Complete." Set objDevice = Nothing Else WScript.Echo "Cancel scanning by user" End If Else WScript.Echo "No connected devices" End If Set objDeviceManager = Nothing Set objDeviceInfos = Nothing WScript.Quit 0 |
|
Последний раз редактировалось Sisin, 20-11-2014 в 15:50. Отправлено: 15:33, 20-11-2014 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Sisin:
и отдельно — присвоение значения: Цитата Sisin:
Код WSH: Скрытый текст
Option Explicit Const ScannerDeviceType = 1 Const ColorIntent = 1 Const wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}" Dim strBaseName Dim iCount Dim objDeviceManager Dim objDeviceInfos Dim objDevice Dim objImageFile Dim objImageProcess Dim strPath2Save Dim strFormat Dim intQuality Dim intDPI Dim intHorizontalSize Dim intVerticalSize If WScript.Arguments.Count = 1 Then strPath2Save = WScript.Arguments.Item(0) With WScript.CreateObject("Scripting.FileSystemObject") iCount = 1 strBaseName = .GetBaseName(strPath2Save) Do If .FileExists(strPath2Save) Then iCount = iCount + 1 strPath2Save = .BuildPath(.GetParentFolderName(strPath2Save), strBaseName & " (" & CStr(iCount) & ")." & .GetExtensionName(strPath2Save)) Else Exit Do End If Loop End With ' Задаём характеристики изображения strFormat = wiaFormatJPEG ' Формат файла — *.jpg intQuality = 85 ' Качество jpg intDPI = 150 ' Разрешение — 150 dpi intHorizontalSize = (210 / 25.4) * intDPI ' Размер по горизонтали — A4 intVerticalSize = (297 / 25.4) * intDPI ' Размер по вертикали — A4 Set objDeviceManager = WScript.CreateObject("WIA.DeviceManager") Set objDeviceInfos = objDeviceManager.DeviceInfos If objDeviceInfos.Count > 0 Then ' Выбираем устройство для сканирования. Если оно единственное, то сие произойдёт без отображения диалога. Set objDevice = WScript.CreateObject("WIA.CommonDialog").ShowSelectDevice(ScannerDeviceType, False, False) ' Кроме того, зная DeviceID устройства, можно использовать иной способ подключения, например: 'Dim objDeviceInfo ' 'For Each objDeviceInfo In objDeviceManager.DeviceInfos ' WScript.Echo objDeviceInfo.DeviceID ' ' If objDeviceInfo.DeviceID = "{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0000" Then ' Set objDevice = objDeviceInfo.Connect ' End If 'Next If Not objDevice Is Nothing Then With objDevice With .Items(1) ' Задаём требуемые характеристики изображения для сканирования With .Properties .Item("6146").Value = ColorIntent ' Цветовая модель (Current Intent) ' Разрешение… .Item("6147").Value = intDPI ' …по горизонтали (Horizontal Resolution) .Item("6148").Value = intDPI ' …по вертикали (Vertical Resolution) ' Начало области сканирования… .Item("6149").Value = 0 ' …по горизонтали (Horizontal Start Position) .Item("6150").Value = 0 ' …по вертикали (Vertical Start Position) ' Размер области сканирования… .Item("6151").Value = intHorizontalSize ' …по горизонтали (Horizontal Extent) .Item("6152").Value = intVerticalSize ' …по вертикали (Vertical Extent) End With ' Инициируем начало операции сканирования Set objImageFile = .Transfer() ' Конвертируем полученное изображение Set objImageProcess = WScript.CreateObject("WIA.ImageProcess") With objImageProcess With .Filters .Add objImageProcess.FilterInfos("Convert").FilterID With .Item(1).Properties .Item("FormatID").Value = strFormat ' Формат изображения .Item("Quality").Value = intQuality ' Качество изображения End With End With Set objImageFile = .Apply(objImageFile) End With End With End With ' Сохраняем полученное изображение objImageFile.SaveFile strPath2Save Set objDevice = Nothing Else WScript.Echo "Cancel scanning by user" End If Else WScript.Echo "No connected devices" End If Set objDeviceManager = Nothing Set objDeviceInfos = Nothing Else WScript.Echo "This script can not be used directly." WScript.Quit 1 End If WScript.Quit 0 Сохраните его в файл с именем, например, «My preset scan.vbs». Далее: Скрытый текст
После этого можете пробовать пользоваться. |
||
Отправлено: 05:24, 21-11-2014 | #4 |
Старожил Сообщения: 345
|
Профиль | Отправить PM | Цитировать Спасибо, Iska
А можно как-нибудь сделать, чтобы в контектном меню был не "Рисунок JPEG", а "Скан"??? В программе Epson Scan есть опции настройки изображения: Повышение резкости, Удаление растра, Улучшение текста. Эти настройки можно реализовать на основе WIA команд или это просто сама программа делает??? |
|
Последний раз редактировалось Sisin, 21-11-2014 в 11:44. Отправлено: 11:23, 21-11-2014 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Sisin:
а) Заменив значение «Рисунок JPEG» в параметре по умолчанию раздела «HKEY_CLASSES_ROOT\jpegfile» на «Скан». Естественно, все .jpg с этого момента будут именно типа «Скан». Не рекомендую. б) Создав своё уникальное расширение, свой привязанный к этому расширению уникальный тип, приписав которому в параметре по умолчанию значение «Скан» мы также можем добиться искомого. Но это уже излишние извращения, на мой взгляд. Цитата Sisin:
|
||
Отправлено: 16:38, 21-11-2014 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Мастер работы со сканером | ankerok | Microsoft Windows 2000/XP | 6 | 18-01-2012 00:33 | |
Разное - Мастер работы со сканером в Виндовс ХР СП3 | legality | Microsoft Windows 2000/XP | 3 | 02-02-2011 14:04 | |
Разное - Мастер работы со сканером или цифровой камерой | shomurod | Microsoft Windows 2000/XP | 1 | 13-04-2010 13:47 | |
Система - Проблемы со сканером | askarmuk | Программное обеспечение Windows | 8 | 16-11-2008 22:58 | |
Права учетной записи для работы со сканером | ren77 | Microsoft Windows 2000/XP | 1 | 23-05-2007 10:20 |
|