Bienenelf - Sa 24.03.12 12:32
Titel:  TBitmap ScanLines, Bildwerte Speichern
Hallo liebe Delphi Gemeinde,
ich habe den folgenden Code im Easy Delphi Helper gefunden. Nun habe ich diesbezüglich eine frage:
Stellt die Funktion der ScanLine ein 2D- Array oder arbeitet es, das Array nur für den einen Pixel ab und beim nächsten Schleifendurchlauf wird er wieder überschrieben?
Gruß Bienenelf...
            
Delphi-Quelltext    
                                        | 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 
 | procedure CompareImages(Image1, Image2: TImage);var x, y: integer;
 anzahl_unterschiede: LongInt;
 zeile1, zeile2: PByteArray;
 prozent: single;
 const schwellenwert=5;
 begin
 anzahl_unterschiede:=0;
 for y:=0 to image1.Picture.Bitmap.height-1 do begin
 zeile1:=image1.Picture.Bitmap.scanline[y];
 zeile2:=image2.Picture.Bitmap.scanline[y];
 for x:=0 to image1.Picture.Bitmap.width-1 do
 if abs(zeile1[x]-zeile2[x])>schwellenwert then
 inc(anzahl_unterschiede);
 if image1.Picture.Bitmap.height*image1.Picture.Bitmap.width>0 then
 prozent:=100*(anzahl_unterschiede/(image1.Picture.Bitmap.height*
 image1.Picture.Bitmap.width))
 else
 prozent:=0;
 label1.caption:='Unterschiede:'+FloatToStr(prozent)+'%';
 end;
 end;
 | 
        
      Moderiert von  Narses: Beiträge zusammengefasst
Narses: Beiträge zusammengefasstIch habe schon selber die Lösung gefunden. 
Danke
Nämlich: Scanline zeigt nur auf ein Pixel. 
Wenn man nun Pixel aufzeichnen möchte so muss man sie in ein 2D Array schreiben.
gruß Bienenelf
Moderiert von  Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am So 25.03.2012 um 15:18
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am So 25.03.2012 um 15:18