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