Идея такова - сравнить два изображения побайтно и получить на выходе цифру не совпадающих пикселей.
Возникло несколько проблем:
1) Краш AutoIt при значении $S_ByteSize более 3000.
2) Сравнение двух копий одного изображения дает постоянно изменяющееся значения различающихся байтов.
Никто с этой библиотекой не сталкивался ?
Сама функция
Тестовый код
Возникло несколько проблем:
1) Краш AutoIt при значении $S_ByteSize более 3000.
2) Сравнение двух копий одного изображения дает постоянно изменяющееся значения различающихся байтов.
Никто с этой библиотекой не сталкивался ?
Сама функция
Код:
;###################################################################################################################################
; CompareBytes
; Funtion to compare 2 data blocks
; syntax = CompareBytes(MemoryPointer1, MemoryPointer2, ByteSize, Tolerance)
; MemoryPointer1 = Pointer to memory
; MemoryPointer2 = Pointer to memory
; ByteSize = How many bytes to compare
; Tolerance = How many bytes may be different
; Return Value = Total Bytes that are different
;###################################################################################################################################
Func CompareBytes($S_MemoryPointer1, $S_MemoryPointer2, $S_ByteSize, $S_Tolerance)
$C_Compare = DllCall($S_DLL, "long", "CompareBytes", _
"long", $S_MemoryPointer1, _
"long", $S_MemoryPointer2, _
"long", $S_ByteSize, _
"long", $S_Tolerance)
Return $C_Compare[0]
EndFunc
Тестовый код
Код:
#include "Prospeed30.au3"
Local $pic1 = LoadFileImage(@ScriptDir & "\" & "photo.png")
Local $pic2 = LoadFileImage(@ScriptDir & "\" & "photo1.png")
Local $iFileSize = FileGetSize(@ScriptDir & "\" & "photo.png")
MsgBox(0,"",$iFileSize)
Local $iFileSize1 = FileGetSize(@ScriptDir & "\" & "photo1.png")
MsgBox(0,"",$iFileSize1)
Local $FX1 = InitFX($pic1)
Local $FX2 = InitFX($pic2)
MsgBox(0,"",$FX1)
MsgBox(0,"",$FX2)
Local $comp = CompareBytes($FX1, $FX2, 1318, 50)
MsgBox(0,"",$comp)