00:15 Использование поиска пикселя с заданным цветом и относительное задание координат. |
Что оптимальней - пиксель с заданным цветом или картинка?При создании ботов с помощью программ которые анализируют пиксели экрана встает актуальный вопрос - что лучше использовать для поиска и ориентира пиксель с заданным цветом или уникальную картинку? Первое что напрашивается выяснить - какой вариант быстрей работает: if_picture_in(0,0,$_xmax,$_ymax,"img.bmp") // если на снимке есть картинка if_pixel_in(0,0,$_xmax,$_ymax,26367) // если на снимке есть пиксель с цветом 26367 скорость работы скриптов в принципе одинакова, поиск пикселя будет немного быстрее потому что сравнивается один пиксель, а в картинке их определенное количество со своими цветами и определенным порядком. Следовательно для увеличения скорости поиска картинки следует делать скрин небольшой уникальной части картинки. И так становиться понятно, что поиск пикселя будет происходить быстрее, но нам надо найти на экране именно тот пиксель который принадлежит заданному виджету(кнопке, картинке, знаку и т. д.), а каковы шансы, что такой цвет больше не встретиться и не произойдет ошибки в процессе поиска? В соревновании уникальности победит картинка. Знатоки и скептики могут возразить - установи зону поиска пикселя, где только этот виджет имеет заданный цвет и проблема решена... Действительно, если мы знаем , что нужная кнопка возникнет в координатах (120,270), код поиска: if_pixel_in(100,100,150,280,26367) // если на снимке есть пиксель с цветом 26367 в области от(100,100) до(150,280) Казалось бы проблема решена? Решение хорошее,если вы работаете со статической страницей и ваш виджет всегда появляется в одном и том же месте и цвет его не меняется динамически... А эти простые способы - смещение кнопок и виджетов, динамическое изменение оттенков цвета методы борьбы с ботами, которые часто используют создатели сайтов. Вывод: поиск уникальной картинки дольше, но надежней. Поиск пикселя с заданным цветом нужно использовать если он уникален (задаем зону поиска, где он уникален).
Теперь рассмотрим удобство использования скрипта. Допустим вы создали скрипт и используете его сами, если вы поменяете браузер или компьютер, то очевидно , что вам необходимо будет сделать новые скрины для картинок или переписать цвет и координаты поиска. А если скрипт будет использовать человек который не создавал его, а только им пользуется? Что легче сделать - скрин заданной картинки и пересохранить с старым названием или произвести анализ - какое новое значение цвета пикселя, найти место в коде и изменить это значение и конечно же определить новые координаты виджета и опять внести изменения в коде.
Вывод очевиден - поиск картинки в коде позволяет использовать скрипт сторонними пользователями и не требует изменений в коде программы.
Вернемся к вопросу удобства использования кода, а именно задание области поиска или координат. Простой подход может помочь использовать код без изменений в большинстве случаев ( изменение браузера, компьютера ) - это задание координат посредством математических выражений через начало координат (0,0) и конец ($_xmax,$_ymax). Пример: поиск от начала экрана до середины ,по вертикали и горизонтали (первая четверть) if_pixel_in ( 0,0, INT($_xmax/2), INT($_ymax/2),26367 ) // если на снимке есть пиксель с цветом 26367 Так как соотношение сторон экранов в большинстве случаев близки, мы получим код более работоспособный при использовании относительных координат, чем при использовании явного задания(числового) координат. Окончательный вывод - используй все возможности, а оптимальные варианты определит лишь практика использования скрипта. Показательный пример смешанного варианта использования поиска пикселей и картинок - Скрипт просмотра сайтов на Lickes Rock. |
|
Всего комментариев: 0 | |