Hallo,
habe mir den "letzten finalen" Quelltext von Phantom1 genauer angeschaut und bin begeistert, wie schnell das ganze klappt - dickes Lob an dieser Stelle!
Dieser Code gibt ja als Int zurück, wie viele Pixel in der Grafik unterschiedlich sind. Nun möchte ich halt nicht nur die Anzahl wissen, sondern a) welche Position und b) wie der neue Wert aussieht. Habe daher den if-Teil wie folgt angepasst:
Delphi-Quellcode:
if (P1^.rgbtRed<>P2^.rgbtRed) or (PWord(P1)^<>PWord(P2)^) then
begin
SetLength(changes, Length(changes) + 1);
y := xy div Bitmap1.Width;
x := xy - (y * Bitmap1.Width);
changes[Length(changes) - 1].x := x;
changes[Length(changes) - 1].y := y;
changes[Length(changes) - 1].Color := Bitmap2.Canvas.Pixels[x, y];
end;
Dabei sieht changes wie folgt aus:
Delphi-Quellcode:
TDifference = record
x: Integer;
y: Integer;
color: TColor;
end;
TDifferences = array of TDifference;
var
changes: TDifferences;
Zu den Messungen: wenn ich Phantom1 Code nehme, dann braucht mein Rechner mit meinen Bildern bei 500 Durchläufen 4.500 TickCounts. Wenn ich meine Anpassungen integriere, dann sind es 11.391. Das ist natürlich prozentual gesehen ein enormer Verlust an Geschwindigkeit. Daher meine Frage an euch Fachmänner - geht das auch schneller?
Ziel ist grob wie folgt kurz beschreibbar:
Programm1: hat Bild1 und Bild2 => Berechnet Differenz
Programm2: hat Bild1 und bekommt Differenz => berechnet draus Bild2
Vielen Dank für eure Mühen
Stefan