Ankündigung

Einklappen
Keine Ankündigung bisher.

Buchstabensalat anstatt GD-Grafik

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Buchstabensalat anstatt GD-Grafik

    Hallo Leute,
    habe auf die Schnelle ein Aktienskript geschrieben,welches die Kurse grafisch darstellen soll; später sollen die Kurse dann aus einer Datenbank kommen.
    Bedauerlicherweise wird allerdings nur ein Buchstabensalat ausgegeben. das Skript selber scheint -zumindest syntaktisch- fehlerfrei zu sein. Irgendwie bekommt er wohl die Bibliotheken nicht richtig geladen, obgleich das Skript folgendes ausgibt:

    GD-Bibliothek initialisiert
    Version:bundled (2.1.0 compatible)
    Grafikformate:
    JPEG
    PNG

    E:\xampp\htdocs\Aktien\Espar_Arial_Classic.ttf

    Anbei der Code. Bedanke mich vorab für alle Ratschläge....
    PHP-Code:


    <!Doctype html> <!-- Definition des doctype-Modus -->
    <html> <!-- Definition des Stammverzeichnises -->
    <head> <!-- Definition des Kopfbereiches -->
    <meta charset="utf-8">                                                     
    <title>Aktien</title>                                                          

    <style></style> 

    </head>
    <body> 
    <script language="JavaScript"></script> 
    <?php
    if(extension_loaded("gd")){
        echo
    "GD-Bibliothek initialisiert<br>";
        
    $gd=gd_info();
        echo
    "Version:".$gd['GD Version']."<br>";
        echo
    "Grafikformate:";
        if(
    $gd['JPEG Support']) echo "<br> JPEG <br>";
        if(
    $gd['PNG Support']) echo "PNG<br><br>";
    }
    else echo
    "GD-Bilbliothek ist nicht initialisiert";
    ?>
    <?php   
    //Grafik erzeugen
    $bild=imagecreate(400,400);
    // Farben & Schriftart
    $grau=imagecolorallocate($bild,192,192,192);
    imagefill ($bild,0,0,$grau);
    $s=imagecolorallocate($bild,0,0,0);
    $r=imagecolorallocate($bild,255,0,0);
    $schriftart dirname(__FILE__) . '\Espar_Arial_Classic.ttf';
    echo 
    $schriftart;
    //Startdatum
    $ds="01.01.2017";
    $datum=mktime(0,0,0,substr($ds,3,2),substr($ds,0,2),substr($ds,6,4));
    $datum=strtotime("-35 day",$datum);
    //Kurse
    srand((double)microtime()*1000000);
    $kurs[0]=25;
    for(
    $i=1;$i<36;$i++){
        
    $kurs[$i]=$kurs[$i-1]+rand(-3,3);
    if(
    $kurs[$i]<1$kurs[$i]=1;
    }
    //Gitternetz & Beschriftungen
    for($i=0;$i<6;$i++){
        
    imageline($bild,30,30+$i*340/5,370,30+$i*340/5,$s);
        
    imagettftext($bild,11,0,375,30+$i*340/5,$s,$schriftart,50-$i*10);
        
    imageline($bild,30+$i*340/5,30,30+$i*340/5,370,$s);
        
    imagettftext($bild,11,0,12+$i*340/5,385,$s,$schriftart,date("d.m.",$datum));
    $datum=strtotime("+7 day",$datum);}
    //Kurs darstellen
    for($i=0;$i<35;$i++){
        
    imageline($bild,30+$i*340/5,370 -$kurs[$i]*340/50,30+($i+1)*340/50,370-$kurs[$i+1]*340/50,$r);}
    // Grafik darstellen
    header("Content Type:image/JPEG");
    imagejpeg($bild);
    // Speicher freigeben
    imagedestroy($bild);
    ?>
    </body>
    </html>
    ​​​​

  • #2
    Du kannst auch nicht HTML und Bildinformation mischen. Beachte das EVA-Prinzip und lagere dein Bild in eine separate Datei aus.

    Code:
    <img src="bild_generieren.php" />
    [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

    Kommentar


    • #3
      Hab ich gemacht. Allerdings wird das Bild nicht eingelesen. Aus einem mir unbekannten Grund wird nur die alt-Bezeichnung ausgegeben. Für folgenden Code klappt das zwar....

      PHP-Code:
       <?php
      header
      ("Content-type: image/png"); // erstellen eines leeren Bildes mit 400px Breite und 300px H?he
      $bild imagecreatetruecolor(400300); // Hintergrundfarbe erstellen
      imagecolorallocate($bild1501500);   // Farben festlegen
      $farbe1 imagecolorallocate($bild2552550);
      $farbe2 imagecolorallocate($bild02550);
      $farbe3 imagecolorallocate($bild00255); // Viereck zeichen  mit folgenden Kordinaten (x1, y1, x2, y2, Farbe)
      imagefilledrectangle ($bild2075350,250$farbe1);
      imagefilledrectangle ($bild150100200280$farbe2);
      imagefilledrectangle ($bild220150330190$farbe3); // Ausgabe des Bildes
      imagepng($bild);
      ?>
      und dann im HTML-Dokument
      PHP-Code:
      <img src="aktie.php" alt="Smiley face"
      ....dasselbe Spielchen klappt allerdings nicht für obigen Code.
      Also bitte ich um weiteres Feedback!

      Kommentar


      • #4
        Dann schau dir mal an, was der Server überhaupt liefert.

        Kommentar


        • #5
          Problem gelöst.
          aus unbekannten Gründen wurde die Schriftart 'Espar_Arial_Classic.ttf' nicht verarbeitet!
          Nachdem ich 'arial.ttf' in denselben Ordner installiert hatte, in welchem auch das Skript läuft, funktionierte es endlich.
          Warum aber erstgenanntes ttf nicht funktionierte, wird wohl immer ein Rätsel bleiben.
          So long!

          Kommentar

          Lädt...
          X