1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

[PHP] Random Farbe

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Salzi, 26.09.06.

  1. Salzi

    Salzi Prinzenapfel

    Dabei seit:
    29.08.06
    Beiträge:
    555
    Tach Kollegen.

    Hab da ein kleines Problem. Evtl hatte da wer von euch ne nette Idee ;)
    Also erstmal die Ausgangslage: Ich habe ein kleines PHP Script welches Werte aus einer Datenbank ausliest und alle ausgelesenen Werte graphisch in ein Diagramm zeichnet (ein Balken Diagramm halt). Damit man die unterschiedlichen Balken von einander unterscheiden kann und man sie der Legende Zuordnen kann sind die Balken in unterschiedlicehr Farbe. Bisher habe ich einfach 15 unterschiedliche Farben von Hand definiert. Nun leider kommen jetzt immer mehr grosse Diagramme und ehrlich gesagt habe ich nicht den Nerv jetzt 100 Unterschiedliche Farben zusammenzustellen. Dachte mir da könnte man doch sicher ein Script basteln welches automatisch ne neue Farbe generiert. Natürlich ist das nicht gerade schwer aber ich hab ein Problem, wie ich sicherstellen kann, dass die Farben auch - fürs Menschliche Auge - unterschiedlich sind. Wäre ja denkbar schlecht, wenn 2 Balken die selbe Farbe haben. Das Script funktioniert im Moment mit RGB Farbwerten.

    Also Problem nochmal kurz zusammengefasst: Ich bräuchte ein Script welches X unterschiedliche Farben definiert. Unterschiedlich im Sinne von, ein normaler Monitor kann die Farbunterschiede darstellen und das menschliche Auge kann diese auch unterscheiden ;)

    Hat irgendwer nen brauchbaren Lösungsansatz. Bin für alle Vorschläge dankbar ;)

    Gruss

    Salzi
     
  2. duderino

    duderino Goldparmäne

    Dabei seit:
    26.01.06
    Beiträge:
    556
    Schreib die 256 Websicheren Farben in eine TXT Datei, lese die dann aus und lasse von PHP der Reihenfolge nach ausgeben. Wenn dir 256 Farben nicht reichen, musst du halt per Hand noch mehr Farben hinzuschreiben. Das geht natürlich auch wenn die Werte in einer DB stehen oder du am Anfang des Scripts ein Array mit den Werten erstellst. Denke aber dass die Variante mit der TXT Datei wohl die sinnvollste sein sollte. Immerhin kannst du die Farben so zu einem gewissen Grad selbst definieren.


    Grüße
    duderino
     
    Salzi gefällt das.
  3. Salzi

    Salzi Prinzenapfel

    Dabei seit:
    29.08.06
    Beiträge:
    555
    Ja genau das isses doch :) Vielen Dank!
     
  4. Sir Q

    Sir Q Rheinischer Winterrambour

    Dabei seit:
    12.04.05
    Beiträge:
    921
    du kannst doch auch farben berechnen lassen. Ganz simples Beispiel:

    $bgcolor = dechex(255 - ($nummer*$aanzahl));
    $bgcolor .= $bgcolor.$bgcolor;


    Das gibt dann einen HEX-Wert wie #2D2D2D aus. Nummer ist die „laufende Nummer” - $aanzahl im Prinzip 255 geteilt durch Anzahl der Unterteilungen. Der Hierdurch entstehende Graukeil reicht von Weiss 255 nach Schwarz …
    ~
    Wenn du drei mal die Farbe unterschiedlich berechen lässt - kommst du auf beliebige Mischungen und kannst somit auch dynamisch die Farbvarianzen bestimmen. Du mußt damit nicht 100 mögliche Farben definieren - wenn du z.B. aus gestalterischen gründen alle grafiken auf der seite in blau gehalten hast, und auch die diagramme nur in dezenten blau-abstufungen laufen sollen …
     
  5. duderino

    duderino Goldparmäne

    Dabei seit:
    26.01.06
    Beiträge:
    556
    Das ist natürlich die eleganteste Lösung.
     
  6. Juuro

    Juuro Schafnase

    Dabei seit:
    07.11.05
    Beiträge:
    2.255
    @Salzi:
    Wie werden bei dir die Diagramme gezeichnet?
     
  7. b0rsten

    b0rsten Gast

    sofern er die farben als html-code ausgibt is das wunderbar, da dann keine farbe zum einsatz kommt, welche nicht "unterstützt wird". wenn er aber seine diagramme mit der gdlib zeichnet, dann kann er ja wesentlich mehr farben nutzen, oder sehe ich das falsch?

    so könnte man (bei verwendung von gdlib) einfach eine rgb-farbe zufällig erstellen...

    Code:
    $farbe = imagecolorallocate($image, rand(0,255), rand(0,255), rand(0,255));
    ein array mit XXX zufälligen farben zu füllen ist dann auch kein problem mehr.... dann könnte man noch einen check einbauen, ob die farbe schon vorhanden ist... damit keine doppelt vorkommt...
     
  8. Salzi

    Salzi Prinzenapfel

    Dabei seit:
    29.08.06
    Beiträge:
    555
    ja richtig die Diagramme werden mit der GD-Lib gezeichnet mit dem imagecolorallocate. Bei b0rsten wäre das Problem das 2 gleiche oder sehr ähnliche Farben erstellt werden könnten. Und das war halt mein Problem. Ich habe jetzt einfach die 216 Websicheren Farben in ein Array geschmissen und lass diese da zufällig raus suchen. Klappt prima.

    @Juuro: Präzisiere bitte deine Frage oder wolltest du auch nur wissen ob ich die GD-Lib verwende?

    Danke allen für die Hilfe
     
  9. Juuro

    Juuro Schafnase

    Dabei seit:
    07.11.05
    Beiträge:
    2.255
    Ich wollte einfach wissen, wie du PHP bzw. HTML dazu bringst dir aus Daten ein dynamisches Diagramm zu zeichnen. Machst du eine Tabelle als Balken und machst den dann je nach Daten unterscheidlich groß, oder wie doer was? :eek:
     
  10. Salzi

    Salzi Prinzenapfel

    Dabei seit:
    29.08.06
    Beiträge:
    555
    OK mal kurz die Funktionsweise:

    Alle Daten können per Script in die Datenbank eingegeben werden.
    Das Script welches das Diagramm zeichnet macht nun follgendes:

    1. Alle Werte holen und den grössen Wert ermitteln
    2. Dem grössten Wert wird dann eine fixe länge zugeordnet (Länge des Balken)
    3. Alle anderen Werte werden in Bezug auf den längsten Balken richtig skaliert
    4. Es wird eine geeignete x- Achse berechnet und die Achse wird demensprechend beschriftet
    5. unten gibts dann noch eine kleine Legende.

    Das script an und für sich ist zu chaotisch um es hier zu veröffentlichen. Ist einmal aus langeweile entstanden, leistet aber nun gute Dienste. Wurde somit auch demensprechend erweitert (darum wohl auch das Chaos)

    [​IMG]

    So sieht ein fertig generiertes Diagramm dann aus.

    Kurz um PHP "malt" das Diagramm und wird in HTML normal als Bild eingebunden.

    OK so die Erklärung?

    Gruss

    Salzi
     
  11. Juuro

    Juuro Schafnase

    Dabei seit:
    07.11.05
    Beiträge:
    2.255
    Ja, vielen Dank! :)

    Damit muss ich mich auch mal noch beschäftigen! :)
     
  12. Salzi

    Salzi Prinzenapfel

    Dabei seit:
    29.08.06
    Beiträge:
    555
    Viel Spass dabei ;)
     
  13. Juuro

    Juuro Schafnase

    Dabei seit:
    07.11.05
    Beiträge:
    2.255
    Öhm,... danke!
    Ist das schwer... das ließt sich ironisch... :)
     
  14. b0rsten

    b0rsten Gast

    irgendwie ist dein generiertes bild "häßlich", bau doch noch einen kleinen 3d-effekt ein? und nimm eine andere schriftart :)

    dann würds mir besser gefallen ;)

    --

    gdlib is ne ganz feine sache, "spiele" auch wirklich gerne damit rum!
     
  15. Salzi

    Salzi Prinzenapfel

    Dabei seit:
    29.08.06
    Beiträge:
    555

    zum glück ist sowas geschmacksache. Zugegeben vor allem die Hintergrundfarbe ist so betrachtet nicht gerade ein Augenschmaus. Ist allerdings auch die Hintergrundfarbe auf der Seite wo die Statistik eingeblendet wird. So passt das ganz schön zusammen.

    Zum 3D Effekt: Hat die GD Lib da etwa ne einfache funktion oder muss man das alles mühsam über rechtecke zusammenfrickeln damit ein 3D Effekt entsteht. Nichts desto trotz sollten Diagramme doch einfach zu lesen sein und eine Funktion erfüllen und nicht ein designtechnisches Extra in einem Layout sein. Oder?

    Zur Schriftart: Ich mag Verdana sehr und verwende sie im Netzt auch recht oft. Mit fällt auch kein Argument gegen diese Schriftart ein o_O

    Gruss

    Salzi
     
  16. b0rsten

    b0rsten Gast

    3d musst du selber bauen :)
     
  17. Salzi

    Salzi Prinzenapfel

    Dabei seit:
    29.08.06
    Beiträge:
    555
    wenn ich mal wieder nicht schlafen kann vielleicht ;)
     
  18. duderino

    duderino Goldparmäne

    Dabei seit:
    26.01.06
    Beiträge:
    556
  19. Juuro

    Juuro Schafnase

    Dabei seit:
    07.11.05
    Beiträge:
    2.255
    Ui, dankeschön! Werd ich mir mal anschaun! :)
     

Diese Seite empfehlen