Nicht nur, das was vorher erwähnt wurde kannst du verbessern, sondern auch deinen Algo, der meiner Meinung nach ziemlich viel unnütze Berechnung anstellt.
Delphi-Quellcode:
var
c : TCanvas;
r,r2 : TRect;
Bild,Bild2,bild3 : TBitmap;
x,y,x_min,y_min,x_max,y_max:integer;
begin
x_min:=9999999;
y_min:=9999999;
x_max:=0;
y_max:=0;
Bild := TBitmap.Create;
Bild2 :=TBitmap.Create;
Bild.LoadFromFile('C:\windows\desktop\bild1.bmp');
Bild2.LoadFromFile('C:\windows\desktop\bild2.bmp');
for x:=1 to bild.width do
for y:=1 to bild.height do
begin
if bild.Canvas.pixels[x,y]<>bild2.Canvas.pixels[x,y] then
begin
bis dahin war in Ordnung.
aber dann würde ich folgendes schreiben:
Delphi-Quellcode:
x_min:=x;
y_min:=y;
break;
end;
end;
for x:=bild.width downto 1 do
for y:=bild.height downto 1 do
begin
if bild.Canvas.pixels[x,y]<>bild2.Canvas.pixels[x,y] then
begin
x_max:=x;
y_max:=y;
break;
end;
end;
r2:= rect(x_min,y_min,x_max,y_max);
Bild3:=TBitmap.Create;
bild3.Width:=x_max-x_min;
bild3.height:=y_max-y_min;
bild3.Canvas.CopyRect(r,bild2.canvas,r2);
bild3.SaveToFile('C:\windows\desktop\bild3.bmp');
showmessage('fertig');
end;
Probier das mal! Ist aber alles ungetestet und so ins textfester eingetippt, also keine Garantie.
Gruß