Hallo,
wollte mal ausprobieren ob es möglich ist mit einer 256 Farben Grafik die entsprechenden Farbindizies der Palette zu ermitteln.
Leider wird bei dem von mir eingeschlagenen Weg nur die Farbe wiedergegeben die der in TColor definierten am nächsten kommt und die Grafik
wird dadurch zerstört.
Weiß jemand Rat?
Delphi-Quellcode:
procedure TForm1.Button22Click(Sender: TObject);
var hoch, breit,i: Integer;
red,green,blue: Byte;
p: TColor;
Label nextPixel;
begin
with Form1.Image1.Canvas do begin
for hoch:=0 to maxY do begin
for breit:=0 to maxX do begin
p:=Image1.Canvas.Pixels[breit,hoch];
red:=GetRValue(p);
green:=GetGValue(p);
blue:=GetBValue(p);
if (red=0) and (green=0) and (blue=0) then goto nextPixel; // schwarz nicht in Palette
for i:=0 to 255 do begin
if (red=r[i]) and (green=g[i]) and (blue=b[i]) then Bild[breit,hoch]:=i; // gefunden
end;
nextPixel:
end;// for breit
end; // for hoch
end; // with
end;