Что нового

Функция PixelChecksum.

Статус
Закрыто для дальнейших ответов.

Kalisnik

Эволюция
Сообщения
295
Репутация
63
Вопрос мой в следующем: Как подсчитывает функция PixelChecksum сумму пикселей? - как я понимаю, подсчитывается общая сумма всех пикселей на некотором заданном участке экрана. Причем в качестве числа отдельного пиксела используется число его цвета? При чем имеет значение только общая сумма пикселов того или иного цвета и не имеет значения порядок их расположения!??? - очень важный момент, который бы хотелось выяснить. Т.е. если мы имеем участок из двух пикселов цвета "В" и цвета "R", то возвращаемое число функцией PixelChecksum не изменится от перестановки мест этих двух пикселов? (хоть так "В"-"R", хоть так "R"-"В" - сумма не измениться?).

Да, и еще. Можно ли один пиксел определенного цвета, заменить N-ным количеством пикселов другого цвета (более светлого или темного) так, что бы возвращаемое число PixelChecksum было одним и тем же?

Спасибо.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Kalisnik
сам механизм подсчета "суммы цветов" пикселей не важен. это что-то типа md5-хеши, он уникален именно для этих пикселей именно с такими цветами. любое изменение параметров функции меняет всю сумму, что делает эту сумму уникальной для заданных параметров. то есть это отличный инструмент для мониторинга изменений в данной области, а не характеристика области. то есть само число не несет никакой информации. главное что она различается при изменение любого из параметров
 
Автор
K

Kalisnik

Эволюция
Сообщения
295
Репутация
63
Kaster

Значит для каждого пиксела функция создает свой уникальный хэш... хмм. У меня возник еще один вопрос: А пикселы "снимаются" с видимой в данный момент области экрана? Может ли этот процесс (равно как и сам результат) "снимания пикселов" :smile:, теоретически, зависит от характеристик самого окна, по отношению к которому применяется функция PixelChecksum? Имеется в виду зависимость от того, каким образом представлена графическая информация в самом окне, а не банальное opt(PixelCoordMode) и изменение цвета активного и не активного окна.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Kalisnik
я тебя не понял. выражайся яснее
 

hikki

Продвинутый
Сообщения
233
Репутация
99
А лучше скажи что ты хочеш сделать, а то разговор на загдках и предположениях получается.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 595
Репутация
938
у этой функции есть параметр hwnd, ты можешь читать пиксели из неактивного но видимого и не закрытого другими окнами окна. Ты не правильно понял как оно работает.
Есть область по высоте и ширине = одному пикселю. В этой области если цвет всегда будет один и тот же (не изменится не на один шейд) то чек сумма будет всегда одинаковой. Например возьми и тупо на странице форума потыкай в разных местах в области где все пиксели одного и того же цвета. Чек сумма всегда будет одной и той же, это же правило распространяется на области более чем из одного пикселя с одинаковым цветом, если область статична, чек сумма там будет одинаковая каждый раз, если же хотябы 1 пиксель изменится хотябы на 1 шейд, чек сумма уже будет другая. Так же если ты проверяешь область где в линию идут 2 белых пикселя, 1 черный и снова 2 белых, и сравнишь их чек сумму с область где идет 1 белый пиксель 1 черный и 3 белых, чек суммы должны различаться. Так же в зависимости от количества отличных по цвету пикселей замедляется работа команды.

Оно кароче того не стоит. У тебя идет в по всей твоей области проверки набор ГетПикселей винапишных, проще напиши свою UDF которая будет работать через PixelGetCalor, работать будет медленнее чем пиксель чек сумм ибо команды автоита нагружены излишней водой в коде, но зато ты сможешь вносить в нее какие хочешь изменения и заставить работать по своим правилам.
 
Автор
K

Kalisnik

Эволюция
Сообщения
295
Репутация
63
С PixelChecksum разобрался. Всем спасибо. А суть мое проблемы была в том, что при видимом изминении изображения чек-сумма не менялась. Оказалось дело в том, что считывалась не та область экрана. А это в свою очередь произошло в силу использования "AutoIt3 Window Spy" вместо "AutoIt Window Info". казалось что "AutoIt3 Window Spy" показывает координаты активного окна с началом отсчета от внешнего края окна, а функция PixelChecksum при включенной опции PixelCoordMode = 2, отсчитывала координаты активного окна начиная от внутреннего края окна (клиентской области - видимо так оно называется). Вследствии чего у меня получилось смещение по пикселям на Х-координате в 3 пиксела и по Y- координете почти в 30 пикселей. Неудивиьтельно что у меня ни чего не получалось :wacko:
 

Igrok

Новичок
Сообщения
5
Репутация
0
Решил не создавать новую тему, т.к. название этой довольно обширное и подходит под мой вопрос.
Хотел бы воспользоваться функцией Pixelchecksum для сравнения определенной области экрана с имеющейся у меня картинкой в формате bmp (т.е. область как раз размером с эту картинку).
Но нигде как-то не нашел каким образом это можно сделать. Везде где эта функция используется - она сравнивает одну и ту же область экрана по координатам, только в разное время.
Кто подскажет как решить мою проблему? Мне надо каким-то образом вычислить контрольную сумму моей картинки и ее подставлять? Или все-таки функция имеет встроенную возможность?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 473
Репутация
2 403
Igrok [?]
Решил не создавать новую тему, т.к. название этой довольно обширное и подходит под мой вопрос.
В этом и вся проблема, сюда может каждый обратиться у кого проблема с функцией PixelChecksum.

Тема закрыта.
 
Статус
Закрыто для дальнейших ответов.
Верх