GetImage: различия между версиями

Материал из UoPilot
Перейти к навигации Перейти к поиску
(Новая страница: « == Описание == '''GetImage''' - функция запоминания части экранной области. Возвращает строку в в...»)
 
 
Строка 5: Строка 5:
 
== Синтаксис ==
 
== Синтаксис ==
 
Привязка к окну: опционально.
 
Привязка к окну: опционально.
<br>Работа со свернутым окном: да.
+
<br>Работа со свернутым окном: да.
&lt;br>Работа с перекрытым окном: Да. Привязка к окну обязательна.
+
<br>Работа с перекрытым окном: Да. Привязка к окну обязательна.
  GetImage (&lt;StartX> &lt;StartY> &lt;EndX> &lt;EndY> [type|handle] [abs])
+
  GetImage (<StartX> <StartY> <EndX> <EndY> [type|handle] [abs])
'''&lt;StartX> &lt;StartY>''' - координаты левого верхнего угла области поиска.
+
'''<StartX> <StartY>''' - координаты левого верхнего угла области поиска.
&lt;br>'''&lt;EndX> &lt;EndY>''' - координаты правого нижнего угла области поиска.
+
<br>'''<EndX> <EndY>''' - координаты правого нижнего угла области поиска.
&lt;br>'''[type|handle]''' (необязательно) - тип поиска. Может принимать значения 2 или целое число означающее хендл окна, в котором нужно вести поиск.
+
<br>'''[type|handle]''' (необязательно) - тип поиска. Может принимать значения 2 или целое число означающее хендл окна, в котором нужно вести поиск.
&lt;br>'''[abs]''' (необязательно) - этот параметр указывается, если вы ищете пиксели в координатах относительно верхнего левого угла экрана, а не рабочего окна.
+
<br>'''[abs]''' (необязательно) - этот параметр указывается, если вы ищете пиксели в координатах относительно верхнего левого угла экрана, а не рабочего окна.
 
  set %a GetImage  (100 100 1000 1000)
 
  set %a GetImage  (100 100 1000 1000)
 
  log %a [1 1] - адрес в памяти
 
  log %a [1 1] - адрес в памяти
Строка 19: Строка 19:
 
  End_script
 
  End_script
 
Коды ошибок GetImage:
 
Коды ошибок GetImage:
&lt;br>'''-1''' - упало при поиске, точная причина не известна.
+
<br>'''-1''' - упало при поиске, точная причина не известна.
&lt;br>'''-2''' - не нашли открывающую скобку после имени функции.
+
<br>'''-2''' - не нашли открывающую скобку после имени функции.
  
 
== Примеры ==
 
== Примеры ==
Строка 95: Строка 95:
  
 
[[Findimage]]
 
[[Findimage]]
&lt;br>[[DeleteImage]]
+
<br>[[DeleteImage]]
&lt;br>[[SaveImage]]
+
<br>[[SaveImage]]
&lt;br>[[LoadImage]]
+
<br>[[LoadImage]]
&lt;br>[[Printscreen]]
+
<br>[[Printscreen]]
  
 
== История развития ==
 
== История развития ==
  
 
'''2.39'''
 
'''2.39'''
&lt;br>Добавил функцию запоминания части экранной области 'GetImage (StartX StartY EndX EndY [type|handle] [abs])'. Возвращает строку в виде "Адрес в памяти|Ширина|Высота|Длина строки в байтах/", либо код ошибки.
+
<br>Добавил функцию запоминания части экранной области 'GetImage (StartX StartY EndX EndY [type|handle] [abs])'. Возвращает строку в виде "Адрес в памяти|Ширина|Высота|Длина строки в байтах/", либо код ошибки.
  
 
'''2.41'''
 
'''2.41'''
&lt;br>Исправил минимальные размеры захватываемой картинки в команде 'getimage' при работе по хэндлу.
+
<br>Исправил минимальные размеры захватываемой картинки в команде 'getimage' при работе по хэндлу.
&lt;br>Исправил исключение при работе по хэндлу в команде 'getimage', когда начальные координаты были больше конечных.
+
<br>Исправил исключение при работе по хэндлу в команде 'getimage', когда начальные координаты были больше конечных.
  
 
[[Категория:Поиск изображений]]
 
[[Категория:Поиск изображений]]
 
[[Категория:Память]]
 
[[Категория:Память]]

Текущая версия на 10:36, 28 августа 2019

Описание

GetImage - функция запоминания части экранной области. Возвращает строку в виде "Адрес в памяти|Ширина|Высота|Длина строки в байтах".

Синтаксис

Привязка к окну: опционально.
Работа со свернутым окном: да.
Работа с перекрытым окном: Да. Привязка к окну обязательна.

GetImage (<StartX> <StartY> <EndX> <EndY> [type|handle] [abs])

<StartX> <StartY> - координаты левого верхнего угла области поиска.
<EndX> <EndY> - координаты правого нижнего угла области поиска.
[type|handle] (необязательно) - тип поиска. Может принимать значения 2 или целое число означающее хендл окна, в котором нужно вести поиск.
[abs] (необязательно) - этот параметр указывается, если вы ищете пиксели в координатах относительно верхнего левого угла экрана, а не рабочего окна.

set %a GetImage  (100 100 1000 1000)
log %a [1 1] - адрес в памяти
log %a [1 2] - ширина изображения
log %a [1 3] - высота изображения
log %a [1 4] - длина строки в байтах
End_script

Коды ошибок GetImage:
-1 - упало при поиске, точная причина не известна.
-2 - не нашли открывающую скобку после имени функции.

Примеры

// Пример 1
set %a GetImage  (100 100 1000 1000)                 // сохранить в памяти часть экрана от координат 100 100 до 1000 1000
set #type %a [1 1]                                   // адрес в памяти
set #a findimage (0 0 901 901 (C:\test.bmp) %arr #type 80 1)    // искать картинку test.bmp на изображении хранящемся в памяти
                                                                // в качестве типа поиска указан адрес в памяти
                                                                // искомая картинка на экране уже может отсутствовать, по сути поиск ведётся на скрине
log #a                                                // результат поиска
if #a > 0                                             // если изображение найдено 
     move %arr [1 1] %arr [1 2]                       // переместить курсор на найденное изображение
end_if
//set $bmp SaveImage (%a [1 1] C:\Image.bmp)          // если нужно, можно сохранить полученное изображение на диск C:\
set $b DeleteImage  (%a [1 1])                        // удалить изображение из памяти
End_script
// Пример 2
// Поиск нескольких картинок на изображении сохранённом в памяти.
// координаты для GetImage:
set #startX 0
set #startY 0
set #endX 600
set #endY 600

 // картинки для поиска : 
set %image [1] картинка1.bmp
set %image [2] картинка2.bmp
set %image [3] картинка3.bmp
set %path [1] "C:\l2\image"              // путь к картинкам
set %a GetImage  (#startX #startY #endX #endY)                 // сохранить в памяти часть экрана от координат 0 0 600 600
set #type %a [1 1]                                   // адрес в памяти
for #i 1 size(%image) 1                      // цикл поиска картинок, size(%image) - количество картинок в массиве
    set #a findimage (0 0 600 600 (%path [1]\%image [#i 1]) %arr #type 80 -1 2)    // искать картинки из массива %image на изображении хранящемся в памяти
    log #a
    if #a > 0                                    // если картинка найдена
        move %arr [1 1] %arr [1 2]               // переместить курсор на найденную картинку
        wait 1000                                // ждать 1 секунду
    end_if
end_for
set $b DeleteImage  (%a [1 1])                                // удалить изображение из памяти
End_script
// Пример 3
// Поиск нескольких картинок, загруженных в память, на изображении сохранённом в памяти.
// Т. к. картинки будут загружены в память, поиск будет происходить быстрее, чем если бы они подгружались с HDD.
// координаты для GetImage:
set #startX 0        
set #startY 0
set #endX 600
set #endY 600
 
set %path [1] "C:\l2\image"              // путь к картинкам

// картинки, которые будут загружены в память:
set %image [1] LoadImage (%path [1]\картинка1.bmp)           
set %image [2] LoadImage (%path [1]\картинка2.bmp)
set %image [3] LoadImage (%path [1]\картинка3.bmp)

set %a GetImage  (#startX #startY #endX #endY)                 // сохранить в памяти часть экрана от координат 0 0 600 600
set #type %a [1 1]                                   // адрес в памяти
for #i 1 size(%image) 1                              // цикл поиска картинок, size(%image) - количество картинок в массиве
    set #a findimage (0 0 600 600 (%image [#i 1]) %arr #type 80 -1 2)    // искать картинки загруженные в память на изображении хранящемся в памяти
    log #a                                       // результат поиска
    if #a > 0                                    // если картинка найдена
        move %arr [1 1] %arr [1 2]               // переместить курсор на найденную картинку
        wait 1000                                // ждать 1 секунду
    end_if
end_for
set $b DeleteImage  (%a [1 1])                                // удалить изображение из памяти (не картинки, а часть сохранённой экранной области)
End_script

Смотрите также

Findimage
DeleteImage
SaveImage
LoadImage
Printscreen

История развития

2.39
Добавил функцию запоминания части экранной области 'GetImage (StartX StartY EndX EndY [type|handle] [abs])'. Возвращает строку в виде "Адрес в памяти|Ширина|Высота|Длина строки в байтах/", либо код ошибки.

2.41
Исправил минимальные размеры захватываемой картинки в команде 'getimage' при работе по хэндлу.
Исправил исключение при работе по хэндлу в команде 'getimage', когда начальные координаты были больше конечных.