N2O: Zufallsfarben mit PHP generieren

Hallo allerseits!

Ich habe eine Frage: Ich möchte gerne mit PHP (und nicht mit Javascript) Zufallsfarben erstellen lassen, ähnlich wie in diesem Beispiel:

http://www.styleassistant.de/tips/beispiel36a.htm

Nur halt nicht mit Javascript.

Merci

Lachgas

  1. Hallo Lachgas!

    Ich habe eine Frage: Ich möchte gerne mit PHP (und nicht mit Javascript) Zufallsfarben erstellen lassen, ähnlich wie in diesem Beispiel:

    Das sollte mit Hilfe von rand() (http://de3.php.net/rand) recht einfach gehen.
    Einfach rand(0, 255), das Ergebnis dann ins Sedezimale-Zahlensytsem umrechnen (siehe http://de3.php.net/manual/en/function.dechex.php), und dann eben ausgeben.

    MfG
    Götz

    --
    Losung für Donnerstag, 23. September 2004
    Ich will dem Herrn singen mein Leben lang und meinen Gott loben, solange ich bin. (Psalm 104,33)
    Leidet jemand unter euch, der bete; ist jemand guten Mutes, der singe Psalmen. (Jakobus 5,13)
    (http://www.losungen.de/heute.php3)
  2. Hallo,

    Ich habe eine Frage: Ich möchte gerne mit PHP (und nicht mit Javascript) Zufallsfarben erstellen lassen, ähnlich wie in diesem Beispiel:

    http://www.styleassistant.de/tips/beispiel36a.htm

    Kommt mir irgendwie bekannt vor ;-).

    Hier mal eine nahezu 1:1-Portierung, wobei die Abfrage der Fenstermaße entfaellt ($fbreite und $fhoehe entsprechend anpassen):

    <?php

    // zufallsfarben.php by TM 09/04
    // analog zu http://www.styleassistant.de/tips/beispiel36a.htm

    $fbreite=800;
    $fhoehe=600;
    $kantenlaenge=50;

    $hanzahl=intval($fbreite/$kantenlaenge);
    $vanzahl=intval($fhoehe/$kantenlaenge);
    $istart=round(($fbreite-$hanzahl*$kantenlaenge)/2);
    $jstart=round(($fhoehe-$vanzahl*$kantenlaenge)/2);

    mt_srand((double)microtime()*1000000);

    for($j=0;$j<$vanzahl;$j++)
    {
      $oben=$j*$kantenlaenge+$jstart;

    for($i=0;$i<$hanzahl;$i++)
      {
        $zr=mt_rand(0,255);
        $zg=mt_rand(0,255);
        $zb=mt_rand(0,255);
        $farbe="background-color: rgb(".$zr.",".$zg.",".$zb.");";
        $links=$i*$kantenlaenge+$istart;
        $hr=dechex($zr);if(strlen($hr)<2)$hr="0".$hr;
        $hg=dechex($zg);if(strlen($hg)<2)$hg="0".$hg;
        $hb=dechex($zb);if(strlen($hb)<2)$hb="0".$hb;
        $hexfarbe="#".$hr.$hg.$hb;
        $hexfarbe="Color Picker: ".strtoupper($hexfarbe);
        $zeile="<div title="".$hexfarbe."" style="position: absolute; width: ".$kantenlaenge."px; height: ".$kantenlaenge."px; top: ".$oben."px; left: ".$links."px; ".$farbe."">&nbsp;</div>\n";
        print $zeile;
      }
    }

    ?>

    BTW: Eine SVG-Umsetzung gibt es bereits: http://svglbc.datenverdrahten.de/?code=zufallsfarben2&znr=on.

    MfG, Thomas

  3. Danke für Eure Antworten.
    Ich habe jedoch noch ein Problem: Ich will jetzt Variablen schaffen, in denen viele verschiedene Zufallszahlen erzeugt werden, also bspw.:

    $farbe="style=color:rgb(".rand(0,255).",".rand(0,255).",".rand(0,255).")";

    $farbe hat aber nun ja leider immer den gleichen Wert. Jetzt möchte ich natürlich eine FOR-Schleife haben, die $farbe1, $farbe2, $farbe3 ..... erzeugt. Das geht aber nicht.

    Habt ihr eine Alternative / Lösung ??

    Gruß
    Lachgas

    1. Hallo N2O!

      $farbe="style=color:rgb(".rand(0,255).",".rand(0,255).",".rand(0,255).")";
      Habt ihr eine Alternative / Lösung ??

      Ich würde dafür ein Array nehmen.

      Also:
      $farben = array();
      for ($i = 0; $i < 100; $i++) {
          $farbe[] = 'style="color:rgb('.rand(0,255).','.rand(0,255).','.rand(0,255).')"';
      }

      Dann kannst Du ja bei der Ausgabe einfach das Array durchgehen.
      Ist wohl einfacher und imho auch "sauberer" als mit $farbe1 -$farbeX.

      MfG
      Götz

      --
      Losung für Donnerstag, 23. September 2004
      Ich will dem Herrn singen mein Leben lang und meinen Gott loben, solange ich bin. (Psalm 104,33)
      Leidet jemand unter euch, der bete; ist jemand guten Mutes, der singe Psalmen. (Jakobus 5,13)
      (http://www.losungen.de/heute.php3)
      1. Klasse, Vielen lieben Dank, Götz! Funktioniert jetzt alles!

        Grüße
        Lachgas