Einzelnen Beitrag anzeigen

Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Bilder vergleichen -> optimiertes verfahren gesucht!

  Alt 16. Jul 2005, 20:09
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ß
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat