Peter: Farbtabelle per CGI-Funktion erstellen

Hallo, kann mir vielleicht jemand bei Folgendem helfen:
Ich möchte mittels einer CGI-Funktion so viele eingefärbte SPAN´s erstellen wie es Farben gibt.

Das erste SPAN soll also schwarz (#000000) und das letzte weiß (#FFFFFF) eingefärbt sein oder umgekehrt. Dazwischen sollen die ganzen anderen Farben liegen. Diese SPAN´s sollen dann einfach hintereinander weg geschrieben werden (print "...").

Danke schon mal.

  1. Hi,

    Das erste SPAN soll also schwarz (#000000) und das letzte weiß (#FFFFFF) eingefärbt sein oder umgekehrt. Dazwischen sollen die ganzen anderen Farben liegen. Diese SPAN´s sollen dann einfach hintereinander weg geschrieben werden (print "...").

    Rechne mal bitte nach wieviel Byte da produziert werden.

    Ich schätze so ca. 16777216 * 20 ==> 320 MByte

    oesi

    1. use Mosche;

      Ich schätze so ca. 16777216 * 20 ==> 320 MByte

      Mein Code (der jetzt auch nicht unbedingt perfekt ist, weil er die Farbengebung über style="background-color:rgb ... erledigt (73 Zeichen) eribt bei mir ungeführ 1 Gb Daten (1003 MB um genau zu sein). Das würde ich nicht über HTTP schicken :-).

      use Tschoe qw(Matti);

      1. Hi Matti,

        Mein Code (der jetzt auch nicht unbedingt perfekt
        ist, weil er die Farbengebung über
        style="background-color:rgb ... erledigt
        (73 Zeichen) eribt bei mir ungeführ 1 Gb Daten
        (1003 MB um genau zu sein).
        Das würde ich nicht über HTTP schicken :-).

        aber es ließe sich phantastisch gzip-komprimieren ...

        Das Problem wäre wohl auch der Browser, der beim
        Rendern die Grätsche machen würde.

        Viele Grüße
              Michael

  2. use Mosche;

    Ich möchte mittels einer CGI-Funktion so viele eingefärbte SPAN´s erstellen wie es Farben gibt.

    Das erste SPAN soll also schwarz (#000000) und das letzte weiß (#FFFFFF) eingefärbt sein oder umgekehrt. Dazwischen sollen die ganzen anderen Farben liegen. Diese SPAN´s sollen dann einfach hintereinander weg geschrieben werden (print "...").

    for (my $r = 0; $r <= 255; $r++) {
      for (my $g = 0; $g <= 255; $g++) {
        for (my $b = 0; $b <= 255; $b++) {
     print "<span style='background-color:rgb($r,$g,$b);'> \  </span>";
        }
      }
    }

    Das ergibt tatsächlich eine riesengrosse Datenmenge.

    use Tschoe qw(Matti);

    1. Ich habe das mal mit dem javascript getestet, da
      ist bei mir der Browser abgestürzt.

      <script>
      for (r = 0; r <= 255; r++) {
        for (g = 0; g <= 255; g++) {
          for (b = 0; b <= 255; b++) {
      document.write('<div style="background-color:rgb('+r+','+g+','+b+');">   </div>');
          }
        }
      }
      </script>

      Das geht bestimmt erst ab 1GB RAM gut.

    2. hallo,

      for (my $r = 0; $r <= 255; $r++) {
        for (my $g = 0; $g <= 255; $g++) {
          for (my $b = 0; $b <= 255; $b++) {

      mach doch statt:
      $r++    $r=$r+16
      $g++    $g=$g+16
      $b++    $b=$b+16

      dann sind es nur noch 4096 verschiedene Farben.

      das ergibt dann ca. 280 KByte.

      oesi

  3. DANKE euch beiden erstmal herzlich.

    Aber ich sehe jetzt auch ein, dass meine Idee wohl nicht so gut war, alle möglichen Farben schreiben zu lassen. Die meisten unterscheiden sich ja sogar je nach Grafikkarte nur sehr sehr wenig bis gar nicht.

    Aber es muss doch irgendwie möglich sein, die wichtigsten Farben (ich denke da so bis an die 50) automatisch und nicht manuell auflisten zu lassen!?

    Fällt euch da was ein?

    Tschau,
    Peter

    1. use Mosche;

      Aber es muss doch irgendwie möglich sein, die wichtigsten Farben (ich denke da so bis an die 50) automatisch und nicht manuell auflisten zu lassen!?

      Guck mal unter http://selfhtml.teamone.de/helferlein/farben.htm. Da sind 48 Farben aufgelistet. Vielleicht findest du heraus, nach welchem Schlüssel die Farben aufgelistet sind und kannst dementsprechend die for Schleifen anpassen.

      use Tschoe qw(Matti);

      1. use Mosche;

        Aber es muss doch irgendwie möglich sein, die wichtigsten Farben (ich denke da so bis an die 50) automatisch und nicht manuell auflisten zu lassen!?

        Guck mal unter http://selfhtml.teamone.de/helferlein/farben.htm. Da sind 48 Farben aufgelistet. Vielleicht findest du heraus, nach welchem Schlüssel die Farben aufgelistet sind und kannst dementsprechend die for Schleifen anpassen.

        use Tschoe qw(Matti);

        Moin Moin !

        Warum nicht einfach copy-and-paste aus der SelfHTML-Seite ? Ich denke, da hat keiner was gegen.

        Oder so:

        ...

        my @colors=qw(
            000000 0000FF 00FFFF FF0000

        (beliebig viele Farbcodes)

        CCCCCC FFFFFF
        );
        foreach my $color (@colors) {
            print qq[<span style="background-color:#$color">blabla</span>];
        }

        ...

        Alexander

        1. use Mosche;

          Aber es muss doch irgendwie möglich sein, die wichtigsten Farben (ich denke da so bis an die 50) automatisch und nicht manuell auflisten zu lassen!?

          http://selfhtml.teamone.de/helferlein/farben.htm

          Warum nicht einfach copy-and-paste aus der SelfHTML-Seite ? Ich denke, da hat keiner was gegen.

          Weil er die Farben nicht "manuell auflisten wollte".

          use Tschoe qw(Matti);

    2. Ich danke euch!!!

      Ich habe jetzt eine mich zufriedenstellende Lösung gefunden:

      <script>
      i = 0;

      for (r = 0; r <= 255; r=r+85)
      {
      for (g = 0; g <= 255; g=g+85)
      {
      for (b = 0; b <= 255; b=b+85)
      {
      document.write('<span style="background-color: rgb('+r+','+g+','+b+'); width: 20px; height: 20px"> </span> ');
      i++;
       if (i == 13)
       {
       document.write('<br><br>');
       i = 0;
       }
      }
      }
      }
      </script>

      1. Hi Peter,

        for (r = 0; r <= 255; r=r+85)

        ich würde Dir vorschlagen, das Inkrement von 85 auf 51 zu ändern.
        Das ergibt dann 6^3=216 Farben, die klassischen "websicheren" Netscape-Farben, die auf einem Rechner mit 256 Farben ziemlich zuverlässig dargestellt werden können.

        Viele Grüße
              Michael