Что нового

[Автоматизация] IE - Сравнение картинок

ssvih-miaa

Новичок
Сообщения
41
Репутация
0
Доброго времени суток всем форумчанам!
Суть: нашел часть кода на форуме
Код:
#include <File.au3>
#include <Array.au3>
#include <GDIPlus.au3>

$aFileList = _FileListToArray(@ScriptDir, '*.jpg', 1)
$sResult = ''
$step = 500 ; шаг при получении массива пикселей, чем больше - тем быстрее работает скрипт
$iN = 10 ; количество наиболее часто встречающихся цветов в массиве, которое берется с начала массива
$iR = 100 ; % совпадения картинок, для отбора на удаление

Dim $aResult[$aFileList[0] + 1][4]

$aResult[0][0] = $aFileList[0]

For $i = 1 To $aFileList[0]
    $avArray = _fon($aFileList[$i], $step, $iN)
    $sTring = ''
    For $j = 1 To $iN
        $sTring &= $avArray[$j][0] & '|'
    Next

    $sTring = StringTrimRight($sTring, 1)
    $aResult[$i][0] = $aFileList[$i]
    $aResult[$i][2] = $avArray[0][0]
    $aResult[$i][3] = $sTring
    $sResult &= $sTring & '%'
Next

$sResult = StringTrimRight($sResult, 1)

For $i = 1 To $aResult[0][0]
    $sResult1 = StringRegExpReplace($sResult, $aResult[$i][3], '*')

    $aSplit = StringSplit($sResult1, '%')

    For $j = 1 To $aSplit[0]
        If $j <> $i Then
            StringReplace($aSplit[$j], '*', '')
            $iT = (@extended / $iN * 100)
            $aSplit[$j] = $aResult[$j][0] & '      ' & $iT & ' %'
            If $iT >= $iR And $aResult[$i][2] > $aResult[$j][2] Then $aResult[$j][1] = 'DEL'
        Else
            $aSplit[$j] = ''
        EndIf
    Next
    $aSplit[0] = $aResult[$i][0]
    _ArrayDisplay($aSplit) ; отображение соотоношения "похожести" картинок, в 0-м элементе - картинка, с которой сравниваются остальные
Next

ReDim $aResult[$aResult[0][0] + 1][2]

_ArrayDisplay($aResult) ; отображение списка картинок, "DEL" - картинки, помеченные для удаления


Func _fon($sPath, $iStep, $iCount)
    Local $hBitmap, $tMap, $Width, $Height, $bData, $i, $aTemp
    _GDIPlus_Startup()
    $hBitmap = _GDIPlus_BitmapCreateFromFile($sPath)
    $Width = _GDIPlus_ImageGetWidth($hBitmap)
    $Height = _GDIPlus_ImageGetHeight($hBitmap)
    $tMap = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $Width, $Height, $GDIP_ILMREAD, $GDIP_PXF32ARGB)
    $bData = DllStructGetData(DllStructCreate('byte[' & ($Width * $Height * 4) & ']', DllStructGetData($tMap, 'Scan0')), 1)
    _GDIPlus_BitmapUnlockBits($hBitmap, $tMap)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_Shutdown()
    $bData = StringTrimLeft($bData, 2)
    $bData = '######FF' & $bData

    $aTemp = StringRegExp($bData, '(\S{1,30})FF', 3)
    _ArrayTrim($aTemp, 24, 1)
    $aTemp[0] = UBound($aTemp) - 1

    For $i = 1 To $aTemp[0] Step $iStep
        Assign($aTemp[$i], Eval($aTemp[$i]) + 1)
    Next

    Dim $uArray[$aTemp[0]][2] = [[0]]

    For $i = 1 To $aTemp[0] Step $iStep
        If Eval($aTemp[$i]) > 0 Then
            $uArray[0][0] += 1
            $uArray[$uArray[0][0]][0] = $aTemp[$i]
            $uArray[$uArray[0][0]][1] = Eval($aTemp[$i])
            Assign($aTemp[$i], -1)
        EndIf
    Next
    ReDim $uArray[$uArray[0][0] + 1][2]

    _ArraySort($uArray, 1, 1, 0, 1)

    ReDim $uArray[$iCount + 1][1]
    $uArray[0][0] = $Width * $Height

    Return $uArray

EndFunc   ;==>_fon

Самостоятельно не хватает знаний разобраться, необходимо реализовать задачу:
1. Получить координаты картинки в браузере по адресу "httр://rubserf.ru/handserf.php", отскринить картинку и сравнить её с уже сохраненными картинками на сервере или ПК, после чего найти 100% совпадение и получить имя файла с которым происходила проверка и совпадение 100%.
 
Автор
ssvih-miaa

ssvih-miaa

Новичок
Сообщения
41
Репутация
0
Форумчане, ну помогите кто нибудь, очень нужно реализовать данную функцию, своими силами не получается (
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
ssvih-miaa
Пожалуйста, оформите тему согласно правилам.
 
Верх