Christoph: Zweifache Grafikausgabe

Beitrag lesen

Hallo Nadine,

hab ich recht, Du willst einen Counter Programmieren? ;-)

Das Problem ist, dass in einem Bild die Informationen ueber groesse etc. fest eingespeichert sind. Ich habe im Web eine Loesung gefunden, die die Grafiken komplett neu generiert:

Die einzelnen Ziffern sind dazu Hexadezimal codiert:

@digits = ("3c 66 66 66 66 66 66 66 66 3c",  # 0
             "30 38 30 30 30 30 30 30 30 30",  # 1
             "3c 66 60 60 30 18 0c 06 06 7e",  # 2
             "3c 66 60 60 38 60 60 60 66 3c",  # 3
             "30 30 38 38 34 34 32 7e 30 78",  # 4
             "7e 06 06 06 3e 60 60 60 66 3c",  # 5
             "38 0c 06 06 3e 66 66 66 66 3c",  # 6
             "7e 66 60 60 30 30 18 18 0c 0c",  # 7
             "3c 66 66 66 3c 66 66 66 66 3c",  # 8
             "3c 66 66 66 66 7c 60 60 30 1c"); # 9

Daraus wird dann der Bitcode erzeugt:

# convert counter to bytes
  $count = $totalReads;
  @bytes = ();
  $len = length($count);
  $formattedCount = sprintf("%0${len}d",$count);

for ($y=0; $y < 10; $y++)
      {
          for ($x=0; $x < $len; $x++)
              {
                 $digit = substr($formattedCount,$x,1);
                 $byte = substr($digits[$digit],$y*3,2);
                 push(@bytes,$byte);
              }
      }

Und alles an den Browser geschickt:

print  "Pragma: no-cache\n";
  print  "Expires: Thu, 01 Dec 1994 16:00:00 GMT\n";
  print  ("Content-type: image/x-xbitmap\n\n");
  printf ("#define count_width %d\n#define
                             count_height 10\n", $len*8);

printf "static char count_bits[] = {\n";

for($i = 0; $i < ($#bytes + 1); $i++)
       {
         print("0x$bytes[$i]");
         if ($i != $#bytes)
            {
                print(",");
                if (($i+1) % 7 == 0)
                   {
                           print("\n");
                   }
            }
       }
  print("}; \n\n");

Funktioniert wunderbar (ein kleines Problem mit dem IE hatte ich, weil der immernoch 30 Sekunden auf weitere Daten wartet, bevor er alles anzeigt. Das kann man aber mit printf "jede Menge Muell hinschicken ... [...]";  beheben.

So bekommst Du dann auch zwei Grafiken nebeneinander, weil der die width selbst berechnet ...

Vielleicht hilfts Dir ja :-)

Gruss aus London,

Chris

--
moaosid