MIllinger: PNG Erzeugung aus XML-Daten via PHP

Hallo,

ich hoffe finde hier Hilfe, bei einem Problem.

Ich möchte gern aus einer XML Datei Werte auslesen und diese für die Erzeugung einer PNG-Datei via PHP nutzen. Wenn ich die Werte des Inhalts des XML-Datei an den IMAGE-Generator übergebe meldet mir das System "Die Grafik '<Ablage PHP-Datei>' kann nicht angezeigt werden, weil sie Fehler enthält.".

<?PHP
$lib = new SimpleXMLElement('xml/template.xml',null,true);

// Aufruf der Bildfunktion
bild ($lib->Elements[0]->Text['Width'], 400, 400, 400, "Hallo");


function bild($i_x1, $i_x2, $i_y1, $i_y2, $i_text) {
$x1 = $i_x1;
$y1 = $i_y1;
$x2 = $i_x2;
$y2 = $i_y2;
$Text = $i_text;
$textnr = 4;

header ("Content-type: image/png");
$bild = imagecreate ($x1 , $y1);
imagecolorallocate ($bild, 0, 0, 0);
$text_farbe = ImageColorAllocate ($bild, 255, 255, 0);
 
ImageString ($bild, $textnr, 0, 0, $Text, $text_farbe);
ImagePNG ($bild);
?>

Wenn ich das Statment $lib->Elements[0]->Text['Width'], durch eine Zahl ersetze funktioniert die Bild erzeugung. Die Weitergabe eines Textes aus der XML-Datei kann ich an das IMAGE-Statamt übergeben.

Gibt es hier eine Problem bei der Interpretation?

Danke

Martin

  1. Hi,

    Ich möchte gern aus einer XML Datei Werte auslesen und diese für die Erzeugung einer PNG-Datei via PHP nutzen. Wenn ich die Werte des Inhalts des XML-Datei an den IMAGE-Generator übergebe meldet mir das System "Die Grafik '<Ablage PHP-Datei>' kann nicht angezeigt werden, weil sie Fehler enthält.".

    die wahrscheinlichste Ursache ist, dass eine der Funktionen, die du aufrufst, eine Fehlermeldung ausgibt, die dann als Text am Anfang der vermeintlichen PNG-Grafik steht. Überprüfe das am besten, indem du zum Testen erstmal text/plain als Content-Type angibst und den Aufruf von imagepng() auskommentierst. Wenn du das Script nun aufrufst, darf theoretisch keine Ausgabe kommen.

    <?PHP
    $lib = new SimpleXMLElement('xml/template.xml',null,true);
    
    // Aufruf der Bildfunktion
    bild ($lib->Elements[0]->Text['Width'], 400, 400, 400, "Hallo");
    
    
    function bild($i_x1, $i_x2, $i_y1, $i_y2, $i_text) {
    $x1 = $i_x1;
    $y1 = $i_y1;
    $x2 = $i_x2;
    $y2 = $i_y2;
    $Text = $i_text;
    $textnr = 4;
    
    header ("Content-type: image/png");
    $bild = imagecreate ($x1 , $y1);
    imagecolorallocate ($bild, 0, 0, 0);
    $text_farbe = ImageColorAllocate ($bild, 255, 255, 0);
     
    ImageString ($bild, $textnr, 0, 0, $Text, $text_farbe);
    ImagePNG ($bild);
    ?>
    

    Einen Syntaxfehler sehe ich hier schon auf den ersten Blick: Der Funktion bild() fehlt eine schließende Klammer. Außerdem sehe ich keinen Sinn darin, einen Anweisungsblock, der nur einmal aufgerufen wird (mehr lässt deine Logik gar nicht zu), in eine Funktion zu kapseln.

    Wenn ich das Statment $lib->Elements[0]->Text['Width'], durch eine Zahl ersetze funktioniert die Bild erzeugung.

    Aber nicht mit dem hier gezeigten Code.

    Die Weitergabe eines Textes aus der XML-Datei kann ich an das IMAGE-Statamt übergeben.

    Wie bitte??

    So long,
     Martin

  2. Hallo,

    Gibt es hier eine Problem bei der Interpretation?

    Ich interpretiere das so, dass deine Bildfunktion eine Zahl erwartet, deine XML-Funktion dir aber nur einen Textstring liefert, den du für eine Zahl hältst.

    Gruß
    Kalk

  3. @@MIllinger

    Ich möchte gern aus einer XML Datei Werte auslesen und diese für die Erzeugung einer PNG-Datei via PHP nutzen.

    Wie soll die generierte Grafik aussehen? Kann es sein, dass für dich dasselbe gilt und du besser SVG statt PNG verwenden solltest?

    LLAP 🖖

    --
    Ist diese Antwort anstößig? Dann könnte sie nützlich sein.