--- ---

The code below compares two pf24bit images and tells you if they are alike or not. It also gives you the lines and pixels that are different:

    function Tbilde_form.CompareBitmaps(B1, B2: TBitmap): boolean;
    var
      ps1, pr1, ps, pr: PRGBTriple;
      I, J, Bps: Integer;
      tid: TDateTime;

      function BytesPerScanline(PixelsPerScanline, BitsPerPixel,
        Alignment: Longint): Longint;
      begin
        Dec(Alignment);
        Result := ((PixelsPerScanline * BitsPerPixel) + Alignment)
          and not Alignment;
        Result := Result div 8;
      end;

    begin
      tid := now;
      Result := True;
      ps1 := b1.ScanLine [0];
      pr1 := b2.ScanLine [0];
      Bps := BytesPerScanLine(b1.Width, 24, 32);
      for I := 0 to b1.Height - 1 do
      begin
        ps := PRGBTriple (PChar (ps1) - Bps * I);
        pr := PRGBTriple (PChar (pr1) - Bps * I);
        for J := 0 to b1.Width - 1 do
        begin
          if not CompareMem(Pr, Ps, SizeOf(TRGBTriple)) then
          begin
            memo1.lines.Add('Line:' + inttostr(I) + ' point: ' + inttostr(j));
            Result := False;
           {Break}
          end;
          Inc (pr);
          Inc (ps)
        end;
        {if not Result then Break}
      end;
      tid_label.caption := timetostr(now - tid);
    end;