Нужна помощь в написании скрипта? Close

Вы можете задать любой вопрос по программе Autohotkey в нашей группе Вконтакте. Если решение требует более высокой квалификации- можно обратиться непосредственно ко мне.

ВконтактеГруппа Вконтакте Электронная почтаЭлектронная почта Личная страницаСимаков Яков ВК
home icon Все разделы
comunity icon Нужна помощь?

ImageSearch -Autohotkey

Ищет изображение на участке экрана.

ImageSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ImageFile

Параметры

OutputVarX/Y

Имена переменных, в которые помещаются координаты X и Y верхнего левого пикселя изображения, найденного на экране (если не находится соответствий, переменные будут пустыми). Координаты отсчитываются относительно активного окна, если только это не изменено командой CoordMode.

Любой из этих параметров (или оба) можно оставить пустым, в случае, когда используется ErrorLevel (см. ниже) для определения наличия соответствий.

X1,Y1

Координаты X и Y верхнего левого угла прямоугольной области поиска, могут быть выражениями.

Координаты отсчитываются относительно активного окна, если только это не изменено командой CoordMode.

X2,Y2

Координаты X и Y правого нижнего угла прямоугольной области поиска, могут быть выражениями.

Координаты отсчитываются относительно активного окна, если только это не изменено командой CoordMode.

ImageFile

Имя файла изображения. Если не задан полный путь, подразумевается, что файл находится в папке, указанной в переменной %A_WorkingDir%.

Поддерживаются изображения формата GIF, JPG, BMP, ICO, CUR, ANI, PNG, TIF, Exif, WMF и EMF. Разрядность цвета изображений BMP должна быть 16 бит или выше

Опции:

Несколько строк, перечисленных ниже, могут присутствовать перед именем файла. Каждую опцию следует отделять одним пробелом или табуляцией. Например: *2 *w100 *h-1 C:\Main Logo.bmp

*IconN: Чтобы помимо первой группы значков (иконок) использовать и другие, укажите сразу после *Icon номер группы. Например, *Icon2 загрузит значок по умолчанию из второй группы.

*n (диапазон оттенков): Число от 0 до 255 включительно. Указывает допустимое отклонение от заданного цвета для красной, зелёной и синей составляющих цвета каждого пикселя. Например, *2 допускает отклонение на две единицы. Этот параметр полезен, когда оттенок искомого изображения находится в некотором интервале. Или если используется формат, который не очень точно отображает картинку на экране (такой как GIF или JPG). Если задать диапазон оттенков 255, все цвета будут отвечать этим условиям. По умолчанию принимает значение 0.

*TransN: Эта опция упрощает поиск. Укажите в пределах изображения один цвет, который на экране может принимать любое значение. Используется, как правило, для поиска изображений формата PNG, GIF и TIF, имеющих прозрачные участки (для значков эта опция не требуется, так как их прозрачность определяется автоматически). Для файлов GIF скорее всего сработает *TransWhite. Для файлов PNG и TIF – *TransBlack. Иначе укажите в качестве N другое название цвета или значение в формате RGB (см. таблицу цветов или используйте команду PixelGetColor в режиме RGB). Примеры: *TransBlack, *TransFFFFAA, *Trans0xFFFFAA.

*wn и *hn: Ширина и высота, под которые масштабируется изображение (эти размеры также определяют, который значок будет загружен из файла ICO). Если обе опции опущены, значки, загружаемые из файлов ICO, DLL или EXE будут приведены к системному размеру маленьких значков по умолчанию, который обычно составляет 16 на 16 пикселей (чтобы принудительно использовать действительный/внутренний размер, укажите *w0 *h0). При загрузке изображений, не являющихся значками (иконками), используются их действительные размеры. Чтобы сжать или растянуть изображение, сохраняя пропорции, укажите -1 для одного размера и положительное число для другого. Например, если указать*w200 *h-1, ширина изображения составит 200 пикселей, а высота будет установлена автоматически.

ErrorLevel

ErrorLevel устанавливается в 0, если изображение в заданной области было найдено; 1 – если не было найдено; 2 – если возникли проблемы, препятствующие проведению поиска (такие как ошибка при открытии файла изображения или неверное оформление опций).

Примечания

Команда ImageSearch может быть использована для обнаружения на экране графических объектов, в которых отсутствует текст (или когда извлечь его затруднительно). К примеру, ImageSearch можно использовать, чтобы выяснить позицию картинок-кнопок, значков, web-ссылок или игровых объектов. Зная расположение объектов, можно щёлкнуть по ним при помощи команды Click.

Иногда удобнее искать не всё изображение, а его небольшую часть. Это может повысить надёжность, когда в целом изображение изменяется, но отдельные его участки остаются неизменными.

Один из способов извлечь часть изображения:

  1. Нажмите Alt+PrintScreen когда изображение видно в активном окне. Снимок экрана будет помещён в буфер обмена.
  2. Откройте программу обработки изображений, к примеру Paint.
  3. Вставьте содержимое буфера (то есть снимок экрана).
  4. Выберите часть изображения, которая не изменяется и не повторяется.
  5. Скопируйте нужный фрагмент и вставьте его в новый документ.
  6. Сохраните его в виде маленького файла для использования командой ImageSearch.

Чтобы соответствовать поисковому запросу, изображение на экране должно быть таких же размеров, что и загруженное с использованием параметра imageFile и его опций.

Участок поиска должен быть видим; иначе говоря, невозможно провести поиск в части окна, перекрытой другим окном. Напротив, изображения под курсором мыши обычно определяются. Исключение – игровые курсоры, в большинстве случаев скрывающие изображения под собой.

Поиск начинается с верхнего ряда участка и продвигается вниз, поэтому, если имеется более одного соответствия, найдено будет ближайшее к верхней границе участка.

Значки, содержащие прозрачный цвет, позволяют этому цвету совпадать с любым цветом на экране. Поэтому цвет того, что находится за значком, не имеет значения.

Вы можете использовать опцию диапазона оттенков (*n), чтобы сделать режим поиска менее придирчивым.

Если изображение на экране полупрозрачно, ImageSearch, вероятно, не сможет его найти. Чтобы обойти это препятствие, попробуйте использовать опцию диапазона оттенков (*n) или сделайте окно непрозрачным при помощи WinSet, Transparent, Off.

Примеры

ImageSearch, FoundX, FoundY, 40,40, 300, 300, C:\My Images\test.bmp CoordMode Pixel ; Отсчитывает нижеследующие координаты относительно экрана (вместо активного окна). ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *Icon3 %A_ProgramFiles%\SomeApp\SomeApp.exe if ErrorLevel = 2 MsgBox Произвести поиск невозможно. else if ErrorLevel = 1 MsgBox Изображение не найдено на экране. else MsgBox Изображение найдено в координатах x=%FoundX%, y=%FoundY%.
Автор перевода: ypppu
Источник: http://forum.script-coding.com/viewtopic.php?id=316
Под редакцией ahk-wiki.ru от 21.08.19