Hi,
ich muss gleich vorweg sagen, dass die Frage wahrscheinlich total idiotisch ist, aber ich schaffe es einfach nicht. Ich bin wirklich ganz neu in Delphi und im Programmieren allgemein und habe deswegen auch wahnsinnige Probleme fertige Quelltexte von anderen zu durchschauen und abzuwandeln usw. Ihr müsst das entschuldigen
Jetzt zu meiner Frage: Ich möchte gerne zwei Bitmaps miteinander vergleichen und wenn sie identisch sind, dann eine Aktion auslösen. Also einen bestimmten Text anzeigen oder einen Ton abspielen. Das ganze sollte möglichst schnell gehen, auch bei sehr großen Bitmaps. Bisher habe ich mit diesem Code
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;
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;
gearbeitet und dann so die Aktion ausgeführt
Delphi-Quellcode:
if (CompareImages(Image1.Picture.Bitmap,Image2.Picture.Bitmap) = 0) then begin
ShowMessage ('Identisch');
end;
.
Den Code hatte ich hier gefunden:
http://www.delphipraxis.net/80639-bi...rgleichen.html
Das ganze funktioniert auch, ist mir aber erstens ein bisschen zu langsam und kommt mir zweitens relativ kompliziert und gepfuscht vor. Gibt es da eine andere, einfachere Lösung?
Wie gesagt, die Frage ist sicher doof, aber ich bin Anfänger
Danke schön!