Entwickler-Ecke

Sonstiges (Delphi) - Farbbereiche Filtern


Desty - So 24.09.06 12:29
Titel: Farbbereiche Filtern
Hallo,

hätt da mal ein kleines Problem, hopffe ihr könnt mir helfen. Wie ich einzelne Farbwerte in Delphi filtere ist kein Problem, bloß gibt es eine einfache Variante das auf einem schwarzen Hintergrund keine dunklen Farben angewand werden können (als Beispiel!)?

Danke schonmal im vorraus für eure Hilfe :-)


Chryzler - So 24.09.06 13:14

Wenn ich dich richtig verstanden habe:
Du musst halt alle Pixel des Bildes durchgehen, und schauen ob eine Bedingung zutrifft. Hier zum Beispiel, dass die Farbe nicht zu dunkel ist.


Desty - So 24.09.06 13:52

user profile iconChryzler hat folgendes geschrieben:
Wenn ich dich richtig verstanden habe:
Du musst halt alle Pixel des Bildes durchgehen, und schauen ob eine Bedingung zutrifft. Hier zum Beispiel, dass die Farbe nicht zu dunkel ist.


Das Problem ist halt das ich einen Hintergrund (zum Beispiel schwarz) habe und nun auch Farbe wie dunkles braun herrausgefiltert werden sollen...Ich kann ja schließlich nicht alle Pixel auf alle dunklen Farben überprüfen :-)


Marco D. - So 24.09.06 15:19

user profile iconDesty hat folgendes geschrieben:
user profile iconChryzler hat folgendes geschrieben:
Wenn ich dich richtig verstanden habe:
Du musst halt alle Pixel des Bildes durchgehen, und schauen ob eine Bedingung zutrifft. Hier zum Beispiel, dass die Farbe nicht zu dunkel ist.


Das Problem ist halt das ich einen Hintergrund (zum Beispiel schwarz) habe und nun auch Farbe wie dunkles braun herrausgefiltert werden sollen...Ich kann ja schließlich nicht alle Pixel auf alle dunklen Farben überprüfen :-)

Wie definierst du denn "dunkle Farbe"?


Chryzler - So 24.09.06 20:08

user profile iconMarco D. hat folgendes geschrieben:
user profile iconDesty hat folgendes geschrieben:
user profile iconChryzler hat folgendes geschrieben:
Wenn ich dich richtig verstanden habe:
Du musst halt alle Pixel des Bildes durchgehen, und schauen ob eine Bedingung zutrifft. Hier zum Beispiel, dass die Farbe nicht zu dunkel ist.


Das Problem ist halt das ich einen Hintergrund (zum Beispiel schwarz) habe und nun auch Farbe wie dunkles braun herrausgefiltert werden sollen...Ich kann ja schließlich nicht alle Pixel auf alle dunklen Farben überprüfen :-)

Wie definierst du denn "dunkle Farbe"?

Wenn der Rot-, Grün-, und Blauanteil einer Farbe unter, sagen wir mal, 40 liegt.


user profile iconDesty hat folgendes geschrieben:
user profile iconChryzler hat folgendes geschrieben:
Wenn ich dich richtig verstanden habe:
Du musst halt alle Pixel des Bildes durchgehen, und schauen ob eine Bedingung zutrifft. Hier zum Beispiel, dass die Farbe nicht zu dunkel ist.


Das Problem ist halt das ich einen Hintergrund (zum Beispiel schwarz) habe und nun auch Farbe wie dunkles braun herrausgefiltert werden sollen...Ich kann ja schließlich nicht alle Pixel auf alle dunklen Farben überprüfen :-)

Wieso denn nicht? Du holst dir von jedem Pixel die einzelnen RGB Werte, und schaust, ob alle drei Werte unter, z.B. 40 sind. Wenn ja, dann ist die Farbe dunkel.


Chryzler - So 24.09.06 20:16

Und weil mir gerade so langweilig war, hab ich dir das hier noch geschrieben:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
function IsDark(Color: TColor; Threshold: Byte): Boolean;
begin
  result := (GetRValue(Color) <= Threshold) and
            (GetGValue(Color) <= Threshold) and
            (GetBValue(Color) <= Threshold);
end;

Jetzt musst du nur noch in einer Scanline-Schleif jeden Pixel durchlaufen, die IsDark-Funktion aufrufen, und dementsprechend rausfiltern.