GetImage
Описание
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', когда начальные координаты были больше конечных.