Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

farben sortieren

hallo zusammen,

ich versuche grad ein skript zu schreiben, bei dem man eine url angibt und über php ausgelesen wird, welche farben auf der homepage verwendet werden. Das geht auch schon ganz gut

Homepage Farbkarte

wie man sehen kann, die Farben hab ich bereits, mein Problem ist aber die Reihenfolge der Farben. Nach welchem System würdet ihr Farben sortieren, natürlich wäre es nicht dumm, erstmal alle Blauen , dann alle Roten, ... aufzulisten, aber das als Skript umzusetzen bekomm ich nicht hin, könnt ihr mir vielleicht helfen ?

Grüße Nils

PS: Und wenn jemand noch Lust hat mir eine Formel zur Umrechnung von RGB nach CMYK zu schicken wäre ich auch dankbar

Hier gehts zum Orginal Eintrag "farben sortieren" im Forum

Antworten

Hallo,

nimm dir die Hexwerte und sortiere doch einfach diese :)

LG

Disi


2.

ich würd die Farben nach dem Wert sortieren:

RGB sortiert nach R von 0 bis 255, G von 0 bis 255 und B von 0 bis 255

Beispiel RGB = #825033, #B02211, # 65CC00, # D5A322

ergibt sortiert: # 65CC00, #825033, #B02211, # D5A322

-------------------------------

Umrechnung:

R + C = 255
G + M = 255
B + Y = 255

Erweiterung zu CMYK mit dem Schwarzanteil S:

C’ = C – S
M’ = M – S
Y’ = Y – S
K = S

Ist aber alles ne hochkomplexe Angelegenheit - Farbtheorie, Farbräume.


3.

Zunächst würde ich jeden der 3 Farbwerte in ein eigenes Array speichern und danach würde ich die Farben nach Helligkeit sortieren, d.h. alle 3 Werte addieren (in einem vierten Array speichern) und dann nach dem Ergebnis der Addition sortieren.
Zur konvertierung von Hex-Werten nach Dezimal-Werten gibt es diese Funktion:
[doc]hexdec[/doc]

Wenn du möchtest, dass für eine bestimmte Seite immer das gleiche Ausgegeben wird, dann empfehle ich dir mergesort, ansonsten ist quicksort wohl das beste aller Sortierverfahren.


4.

erstmal vielen dank, die idee mit der helligkeit ist schonmal ne gute idee, ich werde dann das ergebtnis posten sobald ich es umgesetzt hab.

@Bernd456: irgendwie kann was mit der formal nicht stimmen oder? wie komme ich denn auf das S ?


5.

die Formel stimmt - den Schwarzanteil bestimmst Du selbst.

Schwarz setzt sich ja aus den anderen Farben zusammen,
da im Druck CMY kein 100%iges Schwarz ergeben sondern
eher ein dunkles Braun, mischt man Schwarz hinzu.
(UCR Under Color Removal)

Wie gesagt: beschäftige Dich mit der Theorie.

P.S.:
Der Monitor arbeitet natürlich nur mit RGB...


6.

Bei CMYK ist der Schwarzanteil natürlich mit gegeben, und bestimmt den Kontrast an dunklen Stellen.
http://de.wikipedia.org/wiki/CMYK


7.

Kontrast ist wieder was anderes...


8.

Auf Wikipedia ist das hier zu lesen:
Zitat:
CMYK steht für Cyan (ein grünliches Blau), Magenta (ein zum Violett tendierendes Rot), Yellow (ein mittleres Gelb) und Key (Schwarz, zur Erhöhung des Kontrastes in dunklen Stellen) [...]
Zitat:
Die Schlüsselfarbe K zu sämtlichen Helligkeitsstufen, Schwarz, dient nicht der Farbgebung, sondern lediglich zum Abdunkeln von Farben.



9.

mag ja sein, daß es dort so steht, aber ich hab Druckereitechnik studiert
und kenn mich ein wenig aus.

Das zweite Zitat stimmt.


10.

Wahrscheinlich ist das erste nur falsch ausgedrückt :) für einen der das studiert hat :)


11.

Ist das nicht genau das was ich gesagt habe?

Sortiert nach hex werten (natürlich kann man diese auch in int's umwandeln?

Code:                   In Zwischenablage kopieren (nur IE)
1">

ergibt

Code:                   In Zwischenablage kopieren (nur IE)
2">

was meines erachtens nach Völlig ok ist :D


12.

yep - is ok - man kann das Ganze noch abwandeln,
je nachdem welcher der RGB-Werte als Ausgangspunkt
der Sortierung genommen werden soll.


13.

ich beschäftige mich :)
hab nur gedacht rgb->cymk wäre ne eindeutige sache


14.

nicht mal RGB ist eindeutig.

Hast schon mal den Satz gehört ? :

Auf MEINEM Monitor sehen die Farben aber GANZ anders aus !


15.

ja das ist klar, aber die umrechnung kann ja trotzdem eindeutig sein

...

habs jetzt mal nach der intesität geordnet und sieht schon besser aus. aber noch nicht ganz perfekt


16.

Zitat:
nicht mal RGB ist eindeutig.
Ich habs nicht studiert, aber hat das eine wirklich etwas mit dem anderen zu tuen ? Eindeutig heißt für mich, dass jede Farbe nur einmal vorkommt. Und dies ist mit RGB gewährleistet. Wie ein Monitor das darstellt, ist wieder ein anderes Bier, oder etwas nicht ?


17.

auch CMYK ist nicht eindeutig, weil Farbe immer von der Lcihtquelle abhängt.

Deswegen gibts im Druckbereich genormte Lichtquellen.

@johnpatcher
klar kannst Du sagen die Zahlen sind eindeutig $FF0000 ist eben
$FF0000, aber deswegen noch lange nicht rot.
Wenn $FF0000 an verschiedenen Monitoren anders aussieht
und nach der Umrechnung in CMYK noch mal anders und je nach
Druck noch mal anders.

Zu was braucht man denn ne Umrechnung in CMYK, wenn nicht für
den Druck ?

Hast schon mal für jemand ne Homepage gemacht, der die Internet-Seiten in seiner Hausfarbe haben will und versucht ihm klarzumachen, daß es wegen der verschiedenen Farbräume am Monitor nicht so aussehen kann wie im Druck ?


18.

Eure Diskussion ist für das geg. Thema völlig irrelevant. Es geht darum, Farben zu sortieren, sprich: Eine Reihenfolge auf den Farben zu definieren.

Dazu braucht man ein Kriterium, wobei ich den reinen Farb-Anteilswert (ob R, G, B, C, M, Y K ist dabei völlig egal) eher für ungeeignet halte.

Wie vergleicht man Farben denn in der Natur?

- "Hell" bis "Dunkel"
- "Pastell" bis "Kräftig leuchtend"
- "unteres Regenbogenende" bis "oberes Regenbogenende"

Das sind alles Kriterien, die einem einigermaßen vertraut vorkommen und entsprechen einer Sortierung nach

- Helligkeit
- Sättigung
- Farbton

Also befinden wir uns wieder in einem anderen Farbmodell, dem "HSV"- oder "HSB"-Modell, also "Hue", "Saturation" und "Value"/"Brightness".

Dieses Modell ist ausführlich beschrieben auf http://de.wikipedia.org/wiki/HSV-Farbraum


19.

er liest die Daten aus ner Homepage aus und will sie sortieren.

Bei der Verwendung von HSV ist das ja auch ganz easy:

Hat man die (R, G, B)-Werte einer Farbe, wobei R, G, und B Werte im Intervall [0 , 1] annehmen können, können die (H, S, V) Werte wie folgt errechnet werden:

H' = arccos ( 2*R-G-B / (2*sqrt( (R-G)^2 + (R-B)*(G-B)) ) ) - in Bogenmaß, kann undefiniert sein, siehe unten (Quelle: HSI: Hue Saturation Intensity)

H = H' *180/&#960; falls B < G, sonst H = 360° - H' *180/&#960;

S = 100*( 1 - 3 * MIN(R,G,B)/(R+G+B) ) - kann undefiniert sein, siehe unten

V = 100*(R+G+B)/3

Der resultierende Wert von H liegt im Intervall [0 , 360]°, S und V im Intervall [0 , 100]%.

Beachte, dass diese Formeln einige Eigenheiten der HSV-Werte widerspiegeln:

Wenn R = G = B, dann ist H undefiniert.

Das ist offensichtlich, wenn man die Diagramme oben betrachtet. Denn wenn S = 0 ist, dann liegt die Farbe auf der zentralen Grau-Linie, sodass der Farbton selbstverständlich ohne Bedeutung ist.

Wenn R = G = B = 0, dann ist S undefiniert.

Denn wenn alle drei RGB-Werte null sind ist, ist die Farbe Schwarz, sodass die Farbsättigung ohne Bedeutung ist. Dasselbe gilt übrigens im Falle MAX = MIN = 255, die Farbe ist Weiß, die Formel liefert hier aber formal 0. Undefinierte Werte werden daher aus rechentechnischen Gründen 0 gesetzt.


20.

Bernd: Wenn Du schon die Wikipedia zitierst, dann kennzeichne das bitte auch.


21.

ok - ich dacht das wär nach Deinem Link im Post davor eh klar.


22.

So geschafft, könnt es euch ja mal anschauen, falls einer fragen hat kann er die gerne stellen, ich geb auch gerne den quellcode raus.

Farbkarte

Grüße und nochmal danke
Nils

PS Bitte gebt mir Feedback ob ihr das tool auch für so unnötig haltet wie einige den ich die idee erklärt hab :)


23.

Sieht gut aus!


24.

ich kann mir durchaus vorstellen, dass man das ab und an brauchen kann, allerdings arbeitet das noch etwas ungenau: Auf einer Website hatte ich im CSS einige Farben reingeschrieben, die ich später gar nicht benutzt habe und auch im Kommentar standen einige Zusatzfarben. Die wurden alle mit angezeigt. Zwei Farben wurden nirgends definiert, aber trotzdem angezeigt. Zwei Farben, die relativ wichtig auf der Seite sind, wurden dagegen gar nicht gefunden.


25.

@Oimel, ich war mal so dreist ;P

Zitat:
Warning: array_multisort(): Argument #1 is expected to be an array or a sort flag in /var/kunden/webs/p08_2/studio08/pages/www.studio08.de/code/projekt08.php on line 231
plan08 - Farbkartentool
Seitentitel
Seitenurl http://www.bastian-frank.de/site/front_content.php




26.

Tja, da gibts wohl noch einiges zu tun...


27.

jap einiges zun tun :) aber deswegen lässt man ja leute, die ein bisschen ahnung von php haben testen. die zwei fehler werde ich heute bestimmt noch rausbekommen.


28.

Also den Aufruf mit:

http://www.bastian-frank.de/site/front_content.php

hab ich hinbekommen, fehlt aber irgendwie noch eine Farbe. ( muss ich mal nach dem fehler suchen )

nur das

http://www.bastian-frank.de

bekomm ich nciht hin. Da ist ja irgendwie ne Weiterleitung drin und mit fopen klappt das nicht. (cURL hat ich leider nicht installiert)

hat jemand eine Idee ?

Grüße Nils


29.

Vielleicht hilft ja [doc]file_get_contents[/doc] ?

Wenn nicht, dann mit [doc]fsockopen[/doc] einen Browser simulieren, und Header auswerten.


30.

Zitat:
oimel postete
ich kann mir durchaus vorstellen, dass man das ab und an brauchen kann, allerdings arbeitet das noch etwas ungenau: Auf einer Website hatte ich im CSS einige Farben reingeschrieben, die ich später gar nicht benutzt habe und auch im Kommentar standen einige Zusatzfarben. Die wurden alle mit angezeigt. Zwei Farben wurden nirgends definiert, aber trotzdem angezeigt. Zwei Farben, die relativ wichtig auf der Seite sind, wurden dagegen gar nicht gefunden.
kannst du mir noch sagen welche url du eingegeben hast ?


31.

Hallöchen alle zusammen :)

Also ich möchte noch einmal das hier eigentlich Thema "Farben sortieren" aufgreifen, da ich momentan selber an dem Problem hänge.
Ich möchte eine unbestimmte Menge von Farben (liegen in Hexcode in einem Array vor) so darstellen, dass nebeneinander liegende Farben auch für das Auge ähnlich sind. Ich hab bereits versucht nach H oder S oder L zu sortieren, bekomme dabei aber ein keineswegs gut sortiertes Ergebnis...leider.
Auch den Ansatz von "Achereto" (s.o.) habe ich versucht..und bin auch damit nicht zu frieden.
Ich weiss gerade nicht mehr weiter..
kann mir vielleicht jemand noch ein Kriterium oder ähnliches Vorschlagen?
Freue mich über jede sinnvolle Idee :)

THX & LG
Olli


32.

Die Farbräume, mit denen Du arbeitest, sind mehrdimensional. Eine lineare Ordnung, die sich auf lediglich eine Achse dieses Raumes beschränkt muss natürlich zwangsläufig unvollständig sein.


33.

Also um der Räumlichkeit etwas zu entgehen, habe ich nun eine Gruppierung anhand des Farbtons vorgenommen.
Das heisst, ich habe alle Rottöne ( HSL: H<30° || H>330°), alle Gelbtöne (HSL: 31° <= H <= 75°) usw. (Gradzahlen siehe Farbkreis HSL-Farbmodel) zusammengefasst, so dass ich dann innerhalb dieser Gruppen noch einmal sortieren kann.
Allerdings bringt auch hier eine Sortierung nach Sättigung oder Helligkeit rein gar nichts.
Was kann ich tun? gibt es nicht vlt. irgendeinen zu berechnenden Wert zu jedem Farbwert, welcher als Sortierkriterium verwendet werden kann?
Vlt. nen Abstand zu nem bestimmten Farbton oder ähnliches?

Es kann doch nicht so unmöglich sein Farben so zu sortieren, dass sie auch optisch sortiert wirken?!? Oder? oO


34.

Du kannst natürlich den Abstand zu einem bestimmten Farbton messen und technisch gesehen sind die Farben dann sortiert. Das menschliche Auge wird diese Ordnung trotzdem nicht erkennen, weil es eben nicht so funkioniert. Für das menschliche Auge gibt es anscheinend keine lineare Ordnung auf ALLEN Farben.


35.

hi ho,

omg...ich hatte einen kleinen Fehler in meiner RGB2HSL-Methode....deswegen wurde die Farben falsch sortiert und alles sah aus, wie ein riesen Farbwirrwar. Ich habe das jetzt dennoch über die Abstände der Farben im Farbraum gelöst und bin eigentlich ganz zu frieden.
Toll wär es natürlich noch den wirklich kürzesten Weg durch den Farbraum zu finden, aber das ist dann wohl weniger trivial.
Oder hat da jmd. zufällig nen Script Parat? ;-)

thx a lot & LG
Olli


Hier gehts zum Orginal Eintrag "farben sortieren" im Forum
 
phpforum.de | Impressum