![]() |
Re: 2 TImages mit einander vergleichen
Zitat:
|
Re: 2 TImages mit einander vergleichen
Wollte das mit dem Pixel vergleichen mal versuchen, aber der gibt mir nach deinem Code eine Fehlermeldung raus:
UNdefinierter Bezeichner "Canvas", was ich aber absolut nicht verstehe. |
Re: 2 TImages mit einander vergleichen
Ups, schande über mich! Mach entweder image1.canvas oder image1.picture.bitmap.canvas draus. Das mit dem Canvas funktioniert übrigens nur, falls du .bmp-Daten verwendest.
|
Re: 2 TImages mit einander vergleichen
hab ich leider nicht, hab jpg... Muss ich eben fudeln, oder fällt jmd noch was anderes ein?
|
Re: 2 TImages mit einander vergleichen
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; |
Re: 2 TImages mit einander vergleichen
Zitat:
|
Re: 2 TImages mit einander vergleichen
Bei JPEG-Dateien könntest du da unter Umständen Pech haben. Du vergleichst die Piyel auf 100%-ige Gleichheit. Da JPEG aber vrelustbehaftet komprimiert, kanns sein, dass die Farben um vielleicht 1 RGB-Wert verschieden sind, sie aber als ungleich erkannt werden. Du solltest eine Toleranz einbauen, mit der du die Bilder vergleichst.
MfG Ultimator |
Re: 2 TImages mit einander vergleichen
Zitat:
müsste nicht anstatt
Delphi-Quellcode:
for j := 0 to bm1.Width - 1 do
Delphi-Quellcode:
zumindest bei 24 Bit Bildern stehen?
for j := 0 to (bm1.Width * 3) -1 do
Delphi-Quellcode:
hätte wohl auch gereicht.
if not CompareMem(bm1.ScanLine[i], bm2.ScanLine[i], bm1.Width * 3) then
exit; |
Re: 2 TImages mit einander vergleichen
Hallo,
das kann der Threadersteller ja dann noch einbauen. Ich hab das nur schnell runtergetippt, dass es da Optimierungsmöglichkeiten gibt, ist mir klar :zwinker: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz