Einzelnen Beitrag anzeigen

Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: 2 TImages mit einander vergleichen

  Alt 4. Jul 2007, 23:15
Zitat von DeddyH:
Hab da schnell mal was geschrieben.
Delphi-Quellcode:
function GleicheBilder(gr1,gr2: TGraphic): Boolean;
var i, j: integer;
    P1,P2: PByteArray;
    bm1,bm2: TBitmap;
begin
  Result := false;
  bm1 := TBitmap.Create;
  bm2 := TBitmap.Create;
  try
    bm1.Assign(gr1);
    bm2.Assign(gr2);
    if (bm1.Height <> bm2.Height) or (bm1.Width <> bm2.Width) then exit;
    for i := 0 to bm1.Height - 1 do
      begin
        P1 := bm1.ScanLine[i];
        P2 := bm2.ScanLine[i];
        for j := 0 to bm1.Width - 1 do//<--
          if P1^[j] <> P2^[j] then exit;
      end;
    Result := true;
  finally
    FreeAndNil(bm1);
    FreeAndNil(bm2);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if GleicheBilder(Image1.Picture.Graphic,Image2.Picture.Graphic) then
    showmessage('Gleich')
  else
    ShowMessage('Nicht gleich');
end;
Hallo.

müsste nicht anstattfor j := 0 to bm1.Width - 1 do for j := 0 to (bm1.Width * 3) -1 do zumindest bei 24 Bit Bildern stehen?

Delphi-Quellcode:
if not CompareMem(bm1.ScanLine[i], bm2.ScanLine[i], bm1.Width * 3) then
        exit;
hätte wohl auch gereicht.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat