Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Сканирование из php в windows
Форумы портала PHP.SU » » Графика в PHP » Сканирование из php в windows

Страниц (1): [1]
 

1. Baloven - 18 Ноября, 2015 - 07:28:53 - перейти к сообщению
Доброго дня,

облазил кучу всего но не могу совладать Недовольство, огорчение
есть скрипт на VBS (
CODE (htmlphp):
скопировать код в буфер обмена
  1. Option Explicit
  2.  
  3. Const ScannerDeviceType = 1
  4. Const ColorIntent = 1
  5. Const wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"
  6.  
  7.  
  8. Dim objFSO
  9.  
  10. Dim objDeviceManager
  11. Dim objDeviceInfos
  12. Dim objDevice
  13.  
  14. Dim objImageFile
  15. Dim objImageProcess
  16.  
  17. Dim strPath2Save
  18. Dim strFormat
  19. Dim intQuality
  20. Dim intDPI
  21. Dim intHorizontalSize
  22. Dim intVerticalSize
  23.  
  24.  
  25. ' Задаём характеристики изображения
  26. strPath2Save      = "C:\temp_php" ' Путь к папке для сохранения
  27. strFormat         = wiaFormatJPEG                  ' Формат файла — *.jpg
  28. intQuality        = 100                             ' Качество jpg
  29. intDPI            = 300                            ' Разрешение — 300 dpi
  30. intHorizontalSize = (210 / 25.4) * intDPI          ' Размер по горизонтали — A4
  31. intVerticalSize   = (296 / 25.4) * intDPI          ' Размер по вертикали — A4
  32.  
  33. Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
  34.  
  35. If objFSO.FolderExists(strPath2Save) Then
  36.         Set objDeviceManager = WScript.CreateObject("WIA.DeviceManager")
  37.         Set objDeviceInfos = objDeviceManager.DeviceInfos
  38.        
  39.         If objDeviceInfos.Count > 0 Then
  40.                 ' Выбираем устройство для сканирования. Если оно единственное, то сие произойдёт без отображения диалога.
  41.                 Set objDevice = WScript.CreateObject("WIA.CommonDialog").ShowSelectDevice(ScannerDeviceType, False, False)
  42.                
  43.                 If Not objDevice Is Nothing Then
  44.                         'WScript.Echo objDevice.Properties.Item("Name") & " [" & objDevice.DeviceID & "]"
  45.                         'WScript.Echo "Scanning..."
  46.                        
  47.                         With objDevice
  48.                                 With .Items(1)
  49.                                         ' Задаём требуемые характеристики изображения для сканирования
  50.                                         With .Properties
  51.                                                 .Item("6146").Value = ColorIntent             ' Цветовая модель (Current Intent)
  52.                                                
  53.                                                 ' Разрешение…
  54.                                                 .Item("6147").Value = intDPI                  ' …по горизонтали (Horizontal Resolution)
  55.                                                 .Item("6148").Value = intDPI                  ' …по вертикали (Vertical Resolution)
  56.                                                
  57.                                                 ' Начало области сканирования…
  58.                                                 .Item("6149").Value = 0                       ' …по горизонтали (Horizontal Start Position)
  59.                                                 .Item("6150").Value = 0                       ' …по вертикали (Vertical Start Position)
  60.                                                
  61.                                                 ' Размер области сканирования…
  62.                                                 .Item("6151").Value = intHorizontalSize       ' …по горизонтали (Horizontal Extent)
  63.                                                 .Item("6152").Value = intVerticalSize         ' …по вертикали (Vertical Extent)
  64.                                         End With
  65.                                        
  66.                                         ' Инициируем начало операции сканирования
  67.                                         Set objImageFile = .Transfer()
  68.                                        
  69.                                         ' Конвертируем полученное изображение
  70.                                         'WScript.Echo "Converting..."
  71.                                        
  72.                                         Set objImageProcess = WScript.CreateObject("WIA.ImageProcess")
  73.                                        
  74.                                         With objImageProcess
  75.                                                 With .Filters
  76.                                                         .Add objImageProcess.FilterInfos("Convert").FilterID
  77.                                                        
  78.                                                         With .Item(1).Properties
  79.                                                                 .Item("FormatID").Value = strFormat  ' Формат изображения
  80.                                                                 .Item("Quality").Value  = intQuality ' Качество изображения
  81.                                                         End With
  82.                                                 End With
  83.                                                
  84.                                                 Set objImageFile = .Apply(objImageFile)
  85.                                         End With
  86.                                 End With
  87.                         End With
  88.                        
  89.                         ' Сохраняем полученное изображение
  90.                         objImageFile.SaveFile objFSO.BuildPath(strPath2Save, FormatLocalDateTime() & ".jpg")
  91.                        
  92.                         'WScript.Echo "Complete."
  93.                        
  94.                         Set objDevice = Nothing
  95.                 Else
  96.                         WScript.Echo "Cancel scanning by user"
  97.                 End If
  98.         Else
  99.                 WScript.Echo "No connected devices"
  100.         End If
  101.        
  102.         Set objDeviceManager = Nothing
  103.         Set objDeviceInfos   = Nothing
  104. Else
  105.         WScript.Echo "Папка для сохранения результатов сканирования [" & strPath2Save & "] не найдена."
  106.         WScript.Quit 1
  107. End If
  108.  
  109. Set objFSO = Nothing
  110.  
  111. WScript.Quit 0
  112. '=============================================================================
  113.  
  114. '=============================================================================
  115. Function FormatLocalDateTime()
  116.         Dim objSWbemObjectEx
  117.        
  118.         For Each objSWbemObjectEx In GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("SELECT LocalDateTime FROM Win32_OperatingSystem")
  119.                 FormatLocalDateTime = Left(objSWbemObjectEx.LocalDateTime, 8) & "_" & Mid(objSWbemObjectEx.LocalDateTime, 9, 6)
  120.                
  121.                 Exit For
  122.         Next
  123. End Function
  124. '=============================================================================

Я попытался его "перегнать" в php, но чтот понять не могу как дальше делать Недовольство, огорчение
вот на этом затык
PHP:
скопировать код в буфер обмена
  1.                         $objCommonDialog = new COM("WIA.CommonDialog");
  2.                         $objDevice = $objCommonDialog->ShowSelectDevice(1,0,0);
  3.                         $scaner = $objDevice->Items(1);
  4.                         $params1 = $scaner->Properties()->Item("6146");
  5.                         $params1->Value = $ColorIntent;//цветовая схема
  6.                         $params2 = $scaner->Properties()->Item("6147");
  7.                         $params2->Value = $intDPI;//разрешение по горизонтали
  8.                         $params3 = $scaner->Properties()->Item("6148");
  9.                         $params3->Value = $intDPI;//разрешение по вертикали
  10.                         $params4 = $scaner->Properties()->Item("6149");
  11.                         $params4->Value = 0;//начало области сканирования по горизонтали
  12.                         $params5 = $scaner->Properties()->Item("6150");
  13.                         $params5->Value = 0;//начало области сканирования по вертикали
  14.                         $params6 = $scaner->Properties()->Item("6151");
  15.                         $params6->Value = $intHorizontalSize;//размер области сканирования по горизонтали
  16.                         $params7 = $scaner->Properties()->Item("6152");
  17.                         $params7->Value = $intVerticalSize;//размер области сканирования по вертикали
  18.                         $get_file = $scaner->Transfer();

сканер запускается, что-то сканирует, но куда и как теперь отсканированный файл запихать на сайт не пойму багреппорт по переменным ничего толкового не дает (а точнее я наверно дурак и не понимаю что там пишется Недовольство, огорчение )

 

Powered by ExBB FM 1.0 RC1