Einzelnen Beitrag anzeigen

ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#1

Anzahl der verschieden Farben eines Bitmap's auslesen

  Alt 4. Mär 2006, 14:22
Hallo,

Ich will die Anzahl der verschiedenen verwendeten Farben eines 256-Farben Bitmaps auslesen.
Das heißt wenn ein Bitmap nur aus weiß, gelb und rot besteht soll die funktion z.B: 3 zurückgeben.

Ich habe auch schon eine Funktion geschrieben, aber manchmal gibt sie was falsches zurück,
meistens eine farbe zuviel oder zu wenig...

Delphi-Quellcode:
[..]
farbspeicher: array [1..256] of integer;
BMP: TBitmap;
[..]

function tform1.farbanzahlabfrage:integer;
var
  i,i2: Cardinal;
  farbe_aktuel,i3: TColor;
  neuefarbe: boolean;
begin
  for i:=1 to 256 do farbspeicher[i]:=-1;

  result:=0;

  for i:=0 to BMP.Height-1 do
  for i2:=0 to BMP.Width-1 do
  begin
    neuefarbe:=true;
    farbe_aktuel:=BMP.canvas.pixels[i,i2];
    for i3:=0 to result do
    if farbspeicher[i3+1]=farbe_aktuel then neuefarbe:=false;

    if neuefarbe then
    begin
      farbspeicher[result]:=farbe_aktuel;
      inc(result);
    end;

  end;

end;
kann mir jemand sagen warum diese Funktion nicht immer geht, bzw eine andere Methode um herauszufinden wieviele verschiedene Farben in einen Bitmap sind???

Ferby
  Mit Zitat antworten Zitat