AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bilder vergleichen

Ein Thema von SCHNICO · begonnen am 13. Mär 2004 · letzter Beitrag vom 6. Jun 2006
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#11

Re: Bilder vergleichen

  Alt 8. Sep 2004, 20:35
versuchs mal mit

High(P^) mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Ricane
Ricane

Registriert seit: 21. Mär 2003
Ort: Quickborn
170 Beiträge
 
Delphi 7 Architect
 
#12

Re: Bilder vergleichen

  Alt 8. Sep 2004, 20:41
Mmhhhhh........ ne, funzt auch nicht..... Fehlermeldung hält sich beständig

EDIT: Sorry! Das mit dem High klappt..... war ein Fehler von mir
Hendrik
So much to Code... so less Time....

www.RicaneSoftware.de
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#13

Re: Bilder vergleichen

  Alt 8. Sep 2004, 20:54
Also bei mir gehts.

Mein Test-Code:
Delphi-Quellcode:
var
  P,P2 : PByteArray;
  i: integer;
begin
  i := High(P^);
  CompareMem(P, P2, High(P^));
Der Compiler hat jetzt nur auszusetzen gehabt, das P und P2 nicht intialisert waren. Sonst gabs keine Fehler.

mfG
mirage228

P.S.: TByteArray hat eine feste Länge von 32768 [0..32767]
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#14

Re: Bilder vergleichen

  Alt 8. Sep 2004, 20:55
och menno, mußt du doch tatsächlich sowas altes ausgraben und dann auchnoch behaupten es ginge nicht

Na dann werd' ich wohl mal nachgucken müssen
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Ricane
Ricane

Registriert seit: 21. Mär 2003
Ort: Quickborn
170 Beiträge
 
Delphi 7 Architect
 
#15

Re: Bilder vergleichen

  Alt 8. Sep 2004, 21:05
Aber irgendwie krieg ich trotzdem immer eine Exception, das aus einem Bereich nicht gelesen werden kann...... hier mein Code ...

Der Fehler tritt bei dem CompareMem Befehl auf...

Delphi-Quellcode:
Var

  I, J, K, Laenge: Integer;
  Reihe: Array[1..2] Of PByteArray;
  Ungleich: Array[1..4] Of Boolean;
  [...]

Begin

    [...]

    For K := 1 To 4 Do
    Begin
      For J := 0 To AktBmp[K].Height - 1 Do
      Begin
        Reihe[1] := AktBmp[K].ScanLine[J];
        Reihe[2] := AltBmp[K].ScanLine[J];
        Laenge := High(Reihe[2]^);
        If CompareMem(Reihe[1], Reihe[2], Laenge) = False Then
          Ungleich[K] := True;
        If Ungleich[K] = True Then Break;
      End;
    End

    [...]

End;
Lanege hat fast immer den Wert von 32767... was ja eigentlich total ok ist...


*Ricane-der-alte-Thread-Ausgräber*
Hendrik
So much to Code... so less Time....

www.RicaneSoftware.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#16

Re: Bilder vergleichen

  Alt 8. Sep 2004, 21:31
Also PByteArray ist ein Zeiger auf TByteArray und TByteArray ist als "Array[0..32767] of Byte" definiert.
Length(P) hätte eh nicht funktioniert, da P ein Pointer ist und immer 4 Byte (derzeit) ist

So, das mit CompareMem läuft jetzt:
Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
  Var i, R, W, L, X: Integer;
    BitMap, BitMap2: TBitMap;

  Begin
    BitMap := TBitMap.create;
    BitMap2 := TBitMap.create;
    BitMap.LoadFromFile('vorlage.bmp'); //Laden der ausgangsdatei
    BitMap2.LoadFromFile('screenshot.bmp'); //Laden der vergleichsdatei
    If BitMap.PixelFormat <> BitMap2.PixelFormat Then
      Label1.Caption := 'unterschiedliches Pixelformat'
    Else If (BitMap.Width <> BitMap2.Width) and (BitMap.Height <> BitMap2.Height) Then
      Label1.Caption := 'unterschiedliche Bildgröße'
    Else Begin
      R := 0; W := 0;
      Case BitMap.PixelFormat of
        pf1bit: L := Ceil(BitMap.Width / 8);
        pf4bit: L := Ceil(BitMap.Width / 2);
        pf8bit: L := BitMap.Width;
        pf15bit: L := Ceil(BitMap.Width * 15 / 8); {ich hoffe mal das für die 15 Bit stimmt}
        pf16bit: L := BitMap.Width * 2;
        pf24bit: L := BitMap.Width * 3;
        pf32bit: L := BitMap.Width * 4;
      End;
      For i := 0 to BitMap.Height - 1 do
        If CompareMem(BitMap.ScanLine[i], BitMap2.ScanLine[i], L) Then Inc(R) Else Inc(W);
      Label1.Caption := IntToStr(R) + ' gleiche und ' + IntToStr(W) + ' unterschiedliche Zeilen';
    End;
  End;
$2B or not $2B
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#17

Re: Bilder vergleichen

  Alt 5. Feb 2005, 22:40
*ausgrab*

und was muss ich machen, wenn das PixelFormat meines Bitmaps auf pfDevice steht? Kann ich den Code dahingehend erweitern, oder soll ich einfach das Pixelformat meiner Bitmaps verändern (da ich sie selber erstelle, sollte das kein Problem sein) und wenn ja, was soll ich für ein Pixelformat verwenden?
Peter Enenkel
blubb
  Mit Zitat antworten Zitat
godman

Registriert seit: 25. Mai 2003
25 Beiträge
 
#18

Re: Bilder vergleichen

  Alt 27. Nov 2005, 20:22
Hi Leute bei mir komm die Fehlermeldung "[Fehler] Unit1.pas(78): Undefinierter Bezeichner: 'Ceil'"

Code:

Delphi-Quellcode:
procedure vergleichenb;
var
    b1, b2: TBitmap;
  c1, c2: PByte;
  x, y, i,
  different: Integer; // Counter for different pixels
  Var R, W, L: Integer;
  begin
  b1 := Form1.Image1.Picture.Bitmap;
  b2 := Form1.spielerk.Picture.Bitmap;
  If b1.PixelFormat <> b2.PixelFormat Then
      Form1.Label1.Caption := 'unterschiedliches Pixelformat'
    Else If (b1.Width <> b1.Width) and (b2.Height <> b2.Height) Then
      Form1.Label1.Caption := 'unterschiedliche Bildgröße'
    Else Begin
      R := 0; W := 0;
      Case b1.PixelFormat of
        pf1bit: L := Ceil(b1.Width / 8);
        pf4bit: L := Ceil(b1.Width / 2);
        pf8bit: L := b1.Width;
        pf15bit: L := Ceil(b1.Width * 15 / 8); {ich hoffe mal das für die 15 Bit stimmt}
        pf16bit: L := b1.Width * 2;
        pf24bit: L := b1.Width * 3;
        pf32bit: L := b1.Width * 4;
      rnd;
      For i := 0 to b1.Height - 1 do
        If CompareMem(b1.ScanLine[i], b2.ScanLine[i], L) Then Inc(R) Else Inc(W);
      Form1.Label1.Caption := IntToStr(R) + ' gleiche und ' + IntToStr(W) + ' unterschiedliche Zeilen';
    end;
end;
hab schon die ganze Zeit herumprobiert finde keine Lösung.

Danke für euere Anworten im Voraus

godman
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#19

Re: Bilder vergleichen

  Alt 27. Nov 2005, 23:47
Habe zwar keine Lösung für dein Problem, aber du kannst mal hier (Bitmap Compare) sachauen. Diese Lösung ist zwar einfach aber gut und mit Features. ( Werbung )
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
marlem

Registriert seit: 10. Mär 2006
59 Beiträge
 
Delphi 6 Personal
 
#20

Re: Bilder vergleichen

  Alt 26. Apr 2006, 16:02
ich muss zwei jpgs vergleichen?
welcher Code funzt nun?
gruß und danke

Markus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz