Einzelnen Beitrag anzeigen

etom291272

Registriert seit: 16. Feb 2004
Ort: ---
232 Beiträge
 
#1

Bilder vergleichen unterschiede platzsparend abspeichern

  Alt 3. Nov 2005, 09:53

Guten Tag zusammen

mit diesem Code

Delphi-Quellcode:
var
  y, x: integer;
  P, P2: PRGBTriple; // PRGBQuad def. in Unit Windows;
  CountFalsePixel, FirstTickCount: Integer;
  aRect: TRect;
  MemBmp: TBitmap;
begin
  CountFalsePixel := 0;
  FirstTickCount := GetTickCount;
  // Bitmaps vergleichen
  for y := 0 to Bitm1.Height - 1 do
  begin
    P := Bitm1.ScanLine[y];
    P2 := Bitm2.ScanLine[y];
    for x := 0 to Bitm1.Width - 1 do
    begin
      if RGB(P^.rgbtRed, P^.rgbtGreen, P^.rgbtBlue) <>
        RGB(P2^.rgbtRed, P2^.rgbtGreen, P2^.rgbtBlue) then
      begin
        Inc(CountFalsePixel);
      end;
      Inc(P);
      Inc(P2);
    end;
  end;
   ShowMessage('Das Ausführen dauerte '+IntToStr(GetTickCount - FirstTickCount)+' Ticks'+
              chr(13)+'Unterschiede: '+inttostr(CountFalsePixel));
end;
vergleiche ich recht flott 2 bitmaps (bei grösse 1024 x 768 dauert dass ca 30 ticks) nun möchte ich
die unterschiedlichen pixel mit ihrer information also posx, posy und farbe platzsparend speichern
(stream). Bei meinen bisherigen versuchen wurde der stream bei völlig unterschiedlichen Bildern grösser als dass eigentliche bitmap.

wenn sich das Bild sagen wir um 400000 pixel unterscheidet bei gesamtpixel von 786432 möchte ich mit
10 - 15kb grösse auskommen
ist das möglich
wenn ja wie

Danke für eure Hilfe
  Mit Zitat antworten Zitat