04.08.2013, 13:44
|
Новичок на форуме
|
|
Регистрация: 04.08.2013
Сообщений: 4
|
|
Идентифицировать картинки
Здравствуйте. Такая ситуация: есть на странице две картинки, полученные по своим временным ссылкам. Эти картинки являются ссылками и могут меняться местами друг с другом.
<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);
НО он не подходит.. в нем ошибка есть... Помогите пожалуйста!
|
|
04.08.2013, 14:39
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Какая в нем ошибка? Че ты загадками говоришь-то, а?
|
|
04.08.2013, 15:50
|
Профессор
|
|
Регистрация: 16.05.2013
Сообщений: 229
|
|
Цитата:
|
вот ссылка с точно такой же проблемой
|
той теме полгода
там не такая же проблема, а такой же текст, то есть это ваша тема?
и вы за полгода не решили проблему?
в любом случае не вполне понятно, что вам нужно
не можете различить эти две картинки?
тогда сохраните их в переменные при загрузке страницы
или присвойте им специальные id-шники при загрузке страницы
|
|
04.08.2013, 16:11
|
Новичок на форуме
|
|
Регистрация: 04.08.2013
Сообщений: 4
|
|
mta88,
Объясню точней. Я, как и многие в моём возрасте, играю в браузерные онлайн-игры. То что написано в той теме (на которую я ссылку кидал) - проблема решена. Мне нужен похожий скрипт - который только для других картинок. Ситуация такая: Есть элементарная браузерная игра, без флеша, js и прочих наворотов. В ней есть ПВЕ-режим, в котором можно очень быстро и просто прокачать уровень персонажа. Но в нём есть "капча": время от времени выводятся две картинки, значения которых "искать путь" и "уйти". Они в хтмл-коде неразличимы, загружаются по временной ссылке в которой используется случайное значение - то есть по src отличить их невозможно, и загрузить их второй раз тоже не получится. И нужно как-то отличить эти картинки одну от другой средствами JavaScript. Вопрос: как?
|
|
04.08.2013, 16:31
|
Профессор
|
|
Регистрация: 16.05.2013
Сообщений: 229
|
|
Цитата:
|
Я, как и многие в моём возрасте, играю в браузерные онлайн-игры.
|
ага, значит вам от 12 до 40, но это неважно
задача вроде понятна
если проблемы различаются только картинками, то наверно нужно изменить числа в строке 10, возможно первые 4 из 5
if (context.getImageData(5, 9, 1, 1).data[0]) {
но так лениво сравнивать пиксели
может кто другой поможет
|
|
04.08.2013, 16:47
|
Новичок на форуме
|
|
Регистрация: 04.08.2013
Сообщений: 4
|
|
mta88,
Тимур, расскажите как считать - я сам посчитаю...
|
|
04.08.2013, 16:53
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от MellDixX
|
браузерная игра, без флеша, js и прочих наворотов
|
А как она тогда работает? На HTML? Или на CSS?
Я бы сказал "используй код, который ты сам принес", но ты говоришь
Сообщение от MellDixX
|
НО он не подходит
|
Не буду спрашивать почему он не подходит, тебе видней.
Так что ничего подсказать не могу.
|
|
04.08.2013, 18:16
|
Профессор
|
|
Регистрация: 16.05.2013
Сообщений: 229
|
|
Сообщение от MellDixX
|
расскажите как считать - я сам посчитаю...
|
"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
|
|
|
|