// Hiermit kann man
zwei TBitmap auf Gleichheit prüfen (und so feststellen function breitenwert(bm: TBitmap): Integer;
begin
case bm.pixelformat of
pf32bit:
Result := bm.width * 4;
pf24bit:
Result := bm.width * 3;
pf16bit, pf15bit:
Result := bm.width * 2;
pf8bit:
Result := bm.width;
pf4bit:
Result := bm.width div 2 + 1;
pf1bit:
Result := bm.width div 8 + 1;
else
Result := 0;
end;
dec(Result);
end;
function istgleich(bm1, bm2: TBitmap): Integer;
var
x, y, br: Integer;
p1, p2: PByteArray;
begin
Result := -1;
br := breitenwert(bm1);
if br < 1 then
exit;
Result := 0;
if (bm1.width <> bm2.width) or (bm1.height <> bm2.height) or
(bm1.pixelformat <> bm2.pixelformat) then
exit;
for x := 0 to bm1.height - 1 do
begin
p1 := bm1.scanline[x];
p2 := bm2.scanline[x];
for y := 0 to br do
if p1[y] <> p2[y] then
exit;
end;
Result := 1;
end;
procedure anzeigen(v: Integer);
begin
case v of
- 1:
showmessage('Die Bilder können nicht verglichen werden.');
0:
showmessage('Die Bilder sind ungleich.');
1:
showmessage('Die Bilder sind gleich.');
end;
end;
procedure TForm1.Button5Click(Sender: TObject);
var
bm1, bm2: TBitmap;
begin
bm1 := TBitmap.Create;
bm2 := TBitmap.Create;
bm1.LoadFromFile('d:\bilder\corel009.bmp');
bm2.LoadFromFile('d:\bilder\corel009.bmp');
anzeigen(istgleich(bm1, bm2));
bm2.LoadFromFile('d:\bilder\corel004.bmp');
anzeigen(istgleich(bm1, bm2));
bm2.Free;
bm1.Free;
end;
|





