Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Идентифицировать картинки (https://javascript.ru/forum/misc/40412-identificirovat-kartinki.html)

MellDixX 04.08.2013 13:44

Идентифицировать картинки
 
Вложений: 2
Здравствуйте. Такая ситуация: есть на странице две картинки, полученные по своим временным ссылкам. Эти картинки являются ссылками и могут меняться местами друг с другом.
<table>
<tbody>
<tr><td>
<a class="active_s" href="/hunting/955?r=1357817950.5097"><img src="/hunting/image/955?r=1357817950.5097" width="110" height="15" alt="[картинка]"></a>
</td><td width="50%">
</td><td>
<a class="active_s" href="/hunting/54?r=1357817950.5097"><img src="/hunting/image/54?r=1357817950.5097" width="110" height="15" alt="[картинка]"></a>
</td></tr>
</tbody>
</table>


По хтмл-коду неясно, какая где, их пиксельные размеры одинаковы - то есть просто так их не отличишь. Нужно как-нибудь идентифицировать эти картинки: узнать их размер в битах, проверить цвет определённого пикселя или "прочитать" их как текст (а-ля виндовый блокнот) или даже как двоичный/хекс код. Всё, что нашел в гугле либо не работает, либо не подходит, либо я не понял (в основном). Надеюсь на вашу помощь в реализации одного из способов.
Картинки прикрепляю.
По идее, скрипт должен быть такой:
var data = [], canvas = document.createElement('canvas'), context = canvas.getContext('2d');
(function (i) {
    if (i <= 1) {
        data.push(document.getElementsByClassName('active_s')[i].getElementsByTagName('img')[0]);
        var image = new Image(), args = arguments;
        image.src = data[i].src;
        image.onload = function () {
            context.clearRect(0, 0, canvas.width, canvas.height)
            context.drawImage(image, 0, 0);
            if (context.getImageData(5, 9, 1, 1).data[0]) {
                data[i].parentNode.click(); // Клацаем по "Искать путь"
            } else args.callee(++i);
        };
    };
})(0);

НО он не подходит.. в нем ошибка есть... Помогите пожалуйста!

danik.js 04.08.2013 14:39

Какая в нем ошибка? Че ты загадками говоришь-то, а?

MellDixX 04.08.2013 15:29

danik.js,
вот ссылка с точно такой же проблемой, только картинки немного другие. http://www.cyberforum.ru/javascript/...827-page2.html

mta88 04.08.2013 15:50

Цитата:

вот ссылка с точно такой же проблемой
той теме полгода
там не такая же проблема, а такой же текст, то есть это ваша тема?
и вы за полгода не решили проблему?

в любом случае не вполне понятно, что вам нужно
не можете различить эти две картинки?
тогда сохраните их в переменные при загрузке страницы
или присвойте им специальные id-шники при загрузке страницы

MellDixX 04.08.2013 16:11

mta88,
Объясню точней. Я, как и многие в моём возрасте, играю в браузерные онлайн-игры. То что написано в той теме (на которую я ссылку кидал) - проблема решена. Мне нужен похожий скрипт - который только для других картинок. Ситуация такая: Есть элементарная браузерная игра, без флеша, js и прочих наворотов. В ней есть ПВЕ-режим, в котором можно очень быстро и просто прокачать уровень персонажа. Но в нём есть "капча": время от времени выводятся две картинки, значения которых "искать путь" и "уйти". Они в хтмл-коде неразличимы, загружаются по временной ссылке в которой используется случайное значение - то есть по src отличить их невозможно, и загрузить их второй раз тоже не получится. И нужно как-то отличить эти картинки одну от другой средствами JavaScript. Вопрос: как?

mta88 04.08.2013 16:31

Цитата:

Я, как и многие в моём возрасте, играю в браузерные онлайн-игры.
ага, значит вам от 12 до 40, но это неважно

задача вроде понятна
если проблемы различаются только картинками, то наверно нужно изменить числа в строке 10, возможно первые 4 из 5
if (context.getImageData(5, 9, 1, 1).data[0]) {

но так лениво сравнивать пиксели
может кто другой поможет

MellDixX 04.08.2013 16:47

mta88,
Тимур, расскажите как считать - я сам посчитаю...

danik.js 04.08.2013 16:53

Цитата:

Сообщение от MellDixX
браузерная игра, без флеша, js и прочих наворотов

А как она тогда работает? На HTML? Или на CSS? :D

Я бы сказал "используй код, который ты сам принес", но ты говоришь
Цитата:

Сообщение от MellDixX
НО он не подходит

Не буду спрашивать почему он не подходит, тебе видней.
Так что ничего подсказать не могу.

mta88 04.08.2013 18:16

Цитата:

Сообщение от MellDixX (Сообщение 265799)
расскажите как считать - я сам посчитаю...

"context.getImageData(5, 9, 1, 1).data" возвращает массив из 4-x чисел (красный, зеленый, синий, прозрачность -- все от 0 до 255) пикселя, по счету 6-го слева и 10-го сверху (потому что координаты пикселей начинаются с нуля)

var data = context.getImageData(5, 9, 1, 1).data;
if (data[0]==100 && data[2]==200) {

тут проверяю, что красный равен 100 и синий равен 200

не знаю, понятно ли то что я написал
придется вам наверно подучить javascript


Часовой пояс GMT +3, время: 18:45.