Hi,
also ich habe jetzt den Code versucht:
Delphi-Quellcode:
type
PRGBTripleArray = ^TRGBTripleArray;
TRGBTripleArray =
array [0..50000000]
of TRGBTriple;
function CompareImages(Image1,Image2:TBitmap):Int64;
var x,y:integer;
P1,P2:PRGBTripleArray;
summe1,summe2:integer;
begin
result := 0;
summe1 := 0;
summe2 := 0;
Image1.PixelFormat := pf24bit;
Image2.PixelFormat := pf24bit;
for y := 0
to Image1.Height -1
do
begin
P1 := Image1.ScanLine[y];
P2 := Image2.ScanLine[y];
if not CompareMem(p1,p2,Image1.Width*SizeOf(TRGBTriple))
then
begin
for x := 0
to Image1.Width-1
do
begin
inc(summe1,
RGB(P1[x].rgbtRed,P1[x].rgbtGreen,P1[x].rgbtBlue));
inc(summe2,
RGB(P2[x].rgbtRed,P2[x].rgbtGreen,P2[x].rgbtBlue));
if summe1 <> summe2
then
begin
summe1 := 0;
summe2 := 0;
inc(result);
end;
end;
end;
end;
Application.ProcessMessages;
end;
Leider bekomme ich sogar bei Bildern ohne jegliche
Bewegung (also immer identisch) Werte von 280.000.
Woran kann das liegen?
Werde jetzt mal die Alpha Werte mit einbinden...
gruß