Autor Beitrag
Desty
Hält's aus hier
Beiträge: 15



BeitragVerfasst: So 24.09.06 12:29 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: 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"?

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: So 24.09.06 20:16 
Und weil mir gerade so langweilig war, hab ich dir das hier noch geschrieben:
ausblenden 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.