king_stiven
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Есть такой html Код: <!DOCTYPE html> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Image downloading and comparing</title> </head> <body> <div align="center"> <form method="post" enctype="multipart/form-data"> <table align="center" border="0" cellpadding="10" cellspacing="0" width="90%"> <tbody><tr> <td width="50%"> Рисунок 1 (до 600x600): <input type="file" id="file1"> </td> <td width="50%"> Рисунок 2 (до 600x600): <input type="file" id="file2"> </td> </tr> <tr> <td width="50%" align="center"> <canvas id="imgCanvas1" width="600" height="600" style="background-color: #999999;"> Извините, канва недоступна в вашем бруазере </canvas> </td> <td width="50%" align="center"> <canvas id="imgCanvas2" width="600" height="600" style="background-color: #999999;"> Извините, канва недоступна в вашем бруазере </canvas> </td> </tr> <tr> <td colspan="2" align="center"> <div id="imgResult"></div> </td> </tr> </tbody></table> </form> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script type="text/javascript"> var img1, img2; var ctx1, ctx2; var loaded1 = false, loaded2 = false; var img1_width, img2_width, img1_height, img2_height; <!-- ЗДЕСЬ ОСНОВНАЯ СВЕРКА ФАЙЛОВ --> function compareImages () { //Сравнить рисунки img1 и img2 var result = document.getElementById('imgResult'); var string = ''; if (loaded1==false || loaded2==false) { string = 'Не загружены 2 файла'; } else if (img1_width != img2_width || img1_height != img2_height) { string = 'Для сравнения размеры рисунков должны совпадать<br>Загружено: ('+ img1_width + 'x' + img1_height + ') и ('+ img2_width + 'x' + img2_height + ')'; } else { var diff = 0; var img1data = ctx1.getImageData(0, 0, img1_width, img1_height).data; var img2data = ctx2.getImageData(0, 0, img2_width, img2_height).data; for (var i = 0; i < img1data.length / 4; i++) { diff += Math.abs(img1data[4 * i + 0] - img2data[4 * i + 0]) / 255; diff += Math.abs(img1data[4 * i + 1] - img2data[4 * i + 1]) / 255; diff += Math.abs(img1data[4 * i + 2] - img2data[4 * i + 2]) / 255; } var r = 100*diff/(img1.width * img1.height * 3); string = "Разница между рисунками: " + r.toFixed(5)+'%'; <!-- РЕЗУЛЬТАТ ВЫВОДИТСЯ В ПРОЦЕНТАХ --> //loaded1 = loaded2 = false; } result.innerHTML = string; } function resizeImage (img) { //Изменить размеры рисунка img, здесь вроде убрал лишнее var img_width = img.width; var img_height = img.height; var new_x = 0, new_y = 0; return [img_width, img_height]; } <!-- ЗДЕСЬ ПЕРВЫЙ ФАЙЛ ОБРАБАТЫВАЕТСЯ --> $("#file1").change (function (e) { var URL = window.webkitURL || window.URL; var url = URL.createObjectURL(e.target.files[0]); img1 = new Image(); var canvas1 = document.getElementById('imgCanvas1'); img1.src = url; img1.onload = function() { img1_width = img1.width; img1_height = img1.height; var resizeResults = resizeImage (img1); img1_width = resizeResults[0]; img1_height = resizeResults[1]; ctx1 = canvas1.getContext('2d'); ctx1.fillStyle="#999999"; ctx1.fillRect(0, 0, canvas1.width, canvas1.height); ctx1.drawImage (img1, 0, 0, img1_width, img1_height); loaded1 = true; compareImages(); } }); <!-- ЗДЕСЬ ВТОРОЙ ФАЙЛ ОБРАБАТЫВАЕТСЯ --> $("#file2").change (function (e) { var URL = window.webkitURL || window.URL; var url = URL.createObjectURL(e.target.files[0]); img2 = new Image(); var canvas2 = document.getElementById('imgCanvas2'); img2.src = url; img2.onload = function() { img2_width = img2.width; img2_height = img2.height; var resizeResults = resizeImage (img2); img2_width = resizeResults[0]; img2_height = resizeResults[1]; ctx2 = canvas2.getContext('2d'); ctx2.fillStyle="#999999"; ctx2.fillRect(0, 0, canvas2.width, canvas2.height); ctx2.drawImage (img2, 0, 0, img2_width, img2_height); loaded2 = true; compareImages(); } }); </script> <noscript><div>Извините, требуется включённый Javascript для работы приложения!</div></noscript> </div> </body></html> | Там выбираешь два небольших файла рисунка и сравниваешь их на похожесть. Но мне нужно так: 1 Я в своём auto it скрипте нажимаю на кнопочку, 2 Захватывается не большой кусочек экрана по абсолютным координатам(открыта страница браузера) 3 Далее этот рисунок должен сравниться с несколькими другими файлами рисунков такого же размера(ширина, высота, ) 4 Результат в процентах передаётся дальше в AUTOit. Возможно ли отсюда выцарапать это? Там, насколько я понял, вроде бы сначала попиксельно берётся инфа из двух рисунков, а мне надо, чтоб только один рисунок брался с экрана, а остальные рисунки сравнивались без открытия? Также не нужно сравнение размеров файла, обрезка их. | Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 16:29 07-07-2023 | Исправлено: king_stiven, 16:52 07-07-2023 |
|