Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#15

AW: Bild im Internet Explorer finden?

  Alt 25. Mai 2013, 00:13
Neben den Punkten die Volker bereits aufgeführt hat greifst Du mit
Zitat:
0 to Bild.Width
schon 1 zu weit zu ...

Statt des ByteArray kannst Du eine Array of TRGBQuad verwenden

Delphi-Quellcode:
uses exgdi,exgdipapi,exgdipobj;
{$R *.dfm}
type
  pRGBQuadArray = ^TRGBQuadArray;
  TRGBQuadArray = ARRAY[0..$effffff] OF TRGBQuad;

....
var
 pscanLine32 : pRGBQuadArray;
 i,j:Integer;
 begin
   Bmp.PixelFormat := pf32Bit;
   for i := 0 to bmp.Height -1 do
     begin
     pscanLine32 := bmp.Scanline[i];
     for j := 0 to bmp.Width -1 do
        begin
          ... pscanLine32[j].rgbReserved ...
          ... pscanLine32[j].rgbBlue ...
          ... pscanLine32[j].rgbRed ...
          ... pscanLine32[j].rgbGreen ...
        end;
     end;
 end;
Der Umweg über String und ein Memo im besonderen werden das ganze extrem ausbremsen.

Ich würde den Vergleich direkt über die Scanlines machen

Pseudocodefetzen

Delphi-Quellcode:
  ...
  Pixelidentisch := true;
 
  //Loop über i/j Bild1 x/y Bild2 mit Abbruch wenn nicht Pixelidentisch
  //wenn x und y die Breite und Höhe erreicht haben und Pixelidentisch dann gefunden
  //das ganze dann jeweils mit erhöhten i und j Werten bis Pixelidentisch oder alles durchsucht
 
  Pixelidentisch := Pixelidentisch AND (Integer(pscanLineBitmap1[j]) = Integer(pscanLineBitmap2[x]));
  ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat