Ankündigung

Einklappen
Keine Ankündigung bisher.

Inline-Image Ausgabe mit phplot

Einklappen

Neue Werbung 2019

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

  • Inline-Image Ausgabe mit phplot

    Hi,

    ich möchte gerne einen Graphen mit phplot erzeugen und diesen direkt, ohne ihn als zwischen Datei zu speichern, auszugeben. Dafür habe ich mir eine PHP-Funktion wie folgt geschrieben:

    PHP-Code:
    function create_graph($start_time,$end_time,$counter_nr)
    {


    require_once 
    'phplot/phplot.php';
    require_once 
    'phplot/rgb.inc.php';
    require_once 
    'phplot/phplot_data.php';
     


    setlocale(LC_TIME'de_DE');
    $plot =& new PHPlot(800,515);
    $plot->SetImageBorderType('plain');
    $plot->SetXLabelType('time');
    $plot->SetXTimeFormat('%a %d.%m.%Y %H:%M:%S');

    $plot->SetXLabelAngle(90); 
    $plot->SetXTickLabelPos('plotdown');; 
    $plot->SetXDataLabelPos('none'); 
    $plot->SetDrawXGrid(true);

    $plot->SetPlotType('lines'); 
    $plot->SetDataType('data-data'); 
    $plot->SetDataValues($graph_data); 
    $plot->SetYTickIncrement(1);

    $plot->SetLegend(array('kW-Leistung'));

    # Main plot title:
    $plot->SetXTitle('Zeit in Datum und Uhrzeit');
    $plot->SetYTitle('kW-Leistung');
    $plot->SetYTickPos('plotleft');
    $plot->SetYTickLabelPos('plotleft');
    $plot->SetTitle('kW-Leistung2');

    $plot->SetIsInline(true);

    $plot->DrawGraph();

    }

    ?> 
    Ich habe dazu folgende index.php datei die diese Funktion aufruft:

    PHP-Code:
       <?php
    echo '<img src="data:image/png;base64,';
    $test=create_graph($starttime,$stoptime,$_SESSION["znum"]);    
    echo 
    '">';
    ?>
    Dadurch bekomme ich aber leider immer nur einen Output der Rohdaten des Bildes: <Zq��B�G�5��-����; ��9�ARk�c� �A�� j��� �� j`)$ ����� � �� �)/���jh�������A`F�-c["�v � j�5iɊj`)*���Bas��eJ{bo Ҏ�d�VQ ��*TX���*V�^gNy!UɊ�8Ϭ��o��j�����c��N��� bթs R�!�ǨX ���lx�p@vĥ��5H���TfV��2����LV�j9Ϭ��t��K�)��˞ �`��j��{�!�� ���`.:��סBa_$ ���Z��,H/�'H_��k��F�������J����AV�aGQ��D��K�$�&{{J q� �W� ��N�w�w�v c��~�

    Wie kriege ich das nun hin? Header kann ich nicht neusetzen, da die Seite aus mehreren Teilen besteht.

    Vielen Dank für die Hilfe.

    Gruß kami


  • #2
    <?php
    echo '<img src="data:image/png;base64,';
    wenn du ein Bild direkt ausgeben willst (was so übrigends z.b. im Internet Explorer nicht geht)
    dann solltest du es auch base64 encodieren, du gibst es binär aus!

    -> PHP: base64_encode - Manual


    -> Dean Edwards: Base64 Encoded Images for Internet Explorer
    robo47.net - Blog, Codeschnipsel und mehr
    | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

    Kommentar


    • #3
      Hi,

      also habe ich das richtig verstanden, muss ich wenn ich Bilder per Inline ausgeben will immer einen anderen BRowser als IE haben? Dann erübrigt sich das eh, weil ich auch den IE nutzen will. Also muss ich definitiv immer in eine Datei abspeichern und diese dann einladen?

      Damit kommen wir dann aber gleich zu meiner nächsten Fragestellung.
      Ich lade eine Website und deren Inhalte dynamisch in einen DIV-Container über eine Jquery Funktion nach. Dabei wir zwar der Text aktuallisiert, aber die Bilder bleiben identisch.

      Wie kann ich es nun hinkriegen, das bei jedem Nachladen der Seite auch die Bilder aktualisiert werden?

      Gruß kami

      Kommentar


      • #4
        Also der 8er IE kann es. Hier könnt ihr testen:
        Inline-Grafiken in HTML

        Kommentar

        Lädt...
        X