ich habe zwei bitmaps, die ich gerne vergleichen möchte. zum testen habe ich mit zwei fast komplett identische mit paint(dem von windows) erstellt. sie haben einen einfarbigen hintergrund, eine linie, und einen kreis darauf. der unterschied ist lediglich ein einziger pixel, undzwar der ganz oben links. wenn ich mein programm unterschiedliche pixel suchen lasse, sagt es mir aber es gibt zwei. ich habe dann noch ein testbitmap gemacht, mit einer 61 pixel langen linie ( von (o;o) bis 0;60), wenn ich mein programm darauf anwende, kriege ich 122 als ergebnis. --> zweimal so viel.
hat einer ne idee dazu, oder mache ich grundlegend irgendwas falsch?
x1, y1 und unterschiede sind integer, c1 und c2 sind PByteArray.
sollte mehr code von nöten sein, stelle ich den garne dazu... wäre schön wenn mir einer helfen kann.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| for y1:=0 to image1.Height - 1 do begin c1:=image1.picture.Bitmap.scanline[y1]; c2:=image2.picture.Bitmap.scanline[y1];
for x1:=0 to image1.Width - 1 do begin if (c1[x1]<>c2[x1]) then begin
unterschiede:=unterschiede+1; end
end;end;lbl_unterschiede.caption:=inttostr(unterschiede); |