php und Grafik

  • Hallo wer kann helfen?


    ich moechte mir mit php eigene grafik erzeugen, habe aus verschiedenen Beispielen folgenden Code
    mir erzeugtm, aber leider wird nichts angezeigt. Wo könnte der Fehler liegen, muss ich erst noch
    Zusatzmodule zu php auf meinem Pi installieren ?
    Meiner Meinung nach sieht das alles wie in den Beispielen aus.



    <?php
    header("Content-type: image/png");


    $x = 200;
    $y = 50;

    $img = imagecreatetruecolor($x,$y);


    $color = imagecolorallocate($img, 119, 123, 180);
    imagefilledrectangle($img,0,0,$x,$y,$color);
    imagepng($img);
    imagedestroy($img);


    ?>



    danke .

  • ähhhhmmmm
    echo'
    <img src="/pfad/zum/bild" alt="Fehler beim Anzeigen">
    ';


    oder ist das was du meinst nicht auf nem webserver?

    (I) mehr käse = mehr löcher
    (II) mehr löcher = weniger käse
    (I) = (II)
    mehr käse = weniger käse
    :denker:

  • dieser php code (file grafik.php) ist Teil einer Webseite betehend aus html/php und python code,
    der aus html mit


    <img src="grafik.php" />


    aufgerufen wird.


    Gruss W.G.

  • Den Header kannst du über die grafik.php nicht mehr verändern da der vermutlich bereits über die index.html gesetzt wurde :huh:


    Prüf mal dein error Log: /var/log/apache2/error.log



    Ich würd dir aber raten einfach die grafik.php (oder eine function) aufzurufen, eine Bilddatei erzeugen zu lassen und diese dann mit ' <img src=bild.png /> ' einzubinden.. Also zum Beispiel so:


    grafik.php[code=php]<?php
    $x = 200;
    $y = 50;
    $img = imagecreatetruecolor($x,$y);
    $color = imagecolorallocate($img, 119, 123, 180);
    imagefilledrectangle($img,0,0,$x,$y,$color);
    imagepng($img,"bild.png");
    imagedestroy($img);
    ?>[/php]


    index.php:
    [code=php]
    <?php
    include_once("grafik.php");


    echo "<img src='bild.png' />\n";
    ?>
    [/php]

  • Hallo danke erstmal


    habe in das log file gesehen, da sthet


    call toundefined function imagecreatetruecolor() in /var/www/.....


    habe mir die Zeile 5 mal angeshen und keine schreibfehler gesehen.
    Irgendeine Idee ?


    Gruss W.G.

  • http://www.php.net/manual/de/f….imagecreatetruecolor.php


    Quote


    Depending on your PHP and GD versions this function is defined or not. With PHP 4.0.6 through 4.1.x this function always exists if the GD module is loaded, but calling it without GD2 being installed PHP will issue a fatal error and exit. With PHP 4.2.x this behaviour is different in issuing a warning instead of an error. Other versions only define this function, if the correct GD version is installed.


    Code
    apt-get update
    apt-get install php5-gd
  • meigrafd


    > Den Header kannst du über die grafik.php nicht mehr verändern da der vermutlich bereits über die index.html gesetzt wurde
    Doch, das kann er, SO LANGE keine anderen Ausgaben gemacht wurden.


    Aber danach muessten die Binaerdaten des Bildes ausgegeben werden, und dafuer sehe ich keine Anhaltspunkte in
    seinem Code.

  • danke die Seite kenn ich


    von da habe ich mir den code geholt,
    Wenn ich nur das Beispiel so nehme wie du es oben gezeigt hast kommt der Fehler mit dem truecolor.
    Wenn ich aber wie auf der Webseite angegeben die Zeile mit header eingebe, kommt folgen de Fehlermeldung


    Fatal erro: call to undefined function header ...


    habe auch das update geladen wie du angegeben hast.


    Nun was nun ??


    Gruss W.G.
    [hr]
    nur nochmal
    als Zusammenfassung, ich habe den code auf die beiden files index.php und grafik.php reduziert,
    siehe anhang.


    Gruss W.G.

    Files

    • grafik.php

      (236 Byte, downloaded 74 times, last: )
    • index.php

      (151 Byte, downloaded 62 times, last: )

    Edited once, last by wgrimm55 ().

  • huhu, im Anhang sind zwei Dateien, schau Sie dir mal an und vielleicht wirst ja daraus schlau.


    Dieses Script holt sich Informationen von einer Seite und macht daraus ein Bild.


    Beides auf den Pi laden und im Browser aufrufen, danach siehst das Ergebnis.


    EDIT:


    Das Bild muss unter "tetris.png" gespeichert werden. Siehst aber auch im Code.


  • nur nochmal als Zusammenfassung, ich habe den code auf die beiden files index.php und grafik.php reduziert, siehe anhang.


    In der index.php versuchst du eine bild.png einzufügen aber in der grafik.php wird eine bild.gif erzeugt ... Das kann so also nicht wirklich gehn :D


    Desweiteren wird in der grafik.php eine Variable $php_blau aufgerufen die aber nirgends definiert wurde... Das selbe gilt für $x und $y sowie $img


    Du hast da also fatale Fehler drin ... Dazu kommt aber auch das du die grafik.php anscheint mit einem nicht-Linux-kompatiblen Editor erstellt hast und da Sonderzeichen drin sind die Linux nicht versteht - das sieht man wenn man die Datei über Linux und vi oder nano öffnet
    Also wenn dann immer mit einem Linux-Kompatiblen Editor arbeiten, entweder direkt auf Linux oder unter Windows mit zB notepad++ oder Proton oder UltraEdit



    So funktioniert das bei mir (wenn man alles grad erwähnte beachtet):


    index.php
    [code=php]
    <?php
    error_reporting(E_ALL);
    ini_set('display_errors',1);
    include_once("grafik.php");
    ?>
    [/php]


    grafik.php
    [code=php]
    <?php
    header ('Content-Type: image/png');
    $im = @imagecreatetruecolor(120, 20);
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color);
    imagepng($im);
    imagedestroy($im);
    ?>
    [/php]

  • hallo danke fuer deine Hinweis,


    das sind tipfehler die mir durch das permenente hin und herprobieren in dem Fall passiert sind.
    Sie loesen aber nicht das Problem,
    Ich habe deinen Code eins zu eins eingegeben (copy Paste)und bekomme folgende Fehler


    Parse error: syntax error, unexpected '@' in /var/www/devel/pict/grafik.php on line 3


    Ich glaube bei mir ist was prinzipielles mit php falsch, das ist sicher ganz simple nur ich sehe es nicht,
    habe all meine Beispiele die ich probiert habe aus dem web kopiert in bin immer wieder gescheitert.


    wer hat die goldene Idee?


    Gruss W.G

  • Benutzt du copy&past direkt in nano oder wie machst du das? Beschreib das mal bitte so detailiert wie möglich







    Ansonsten reinstallierst du das halt einfach:

    Code
    apt-get remove --purge apache2 php5 php5-gd
    apt-get install apache2 php5 php5-gd
  • Hallo


    ich arbeite nicht mit nano sondern in der Grafikumgebung mit leafpad.
    Am copy paste kann es nicht liegen habe das ganze auch schon manuell eingegeben.
    Gleiehes Ergebnis, die anderen code beispiele habe ich in php python oder html aehnlich eingegeben
    da gab es keine Probleme mit ill. Zeichen beim copy pasate wie du vielleicht annimmst.


    habe die install auch durch gefuehrt wie angegeben.


    Werde wohl das Ganze erstmal auf Eis legen und spaeter weiter machen,
    Vielleicht kommt noch der goldene Einfall.


    Danke vorerst an alle


    gruss W.G.

  • Nunja, in der von dir im Beitrag #8 angehängten grafik.php sind definitiv Sonderzeichen enthalten die aber Fehler verursachen - also ausdenken oder annehmen tue ich das nicht, sondern das ist Fakt:

    PHP
    <?php
    headerÂ| ("Content-Type:Â| image/gif");
    $imÂ| =Â| imagecreatetruecolor(120,Â| 20);
    $text_colorÂ| =Â| imagecolorallocate($im,Â| 233,Â| 14,Â| 91);
    imagefilledrectangle($img,0,0,$x,$y,$php_blau);
    imagegif($im,"bild.gif");
    imagedestroy($im);
    ?>



    Deshalb machst du das mal bitte wie folgt:


    - Mit PuTTY eine SSH Verbindung herstellen
    - Ins verzeichnis /var/www/ wechseln: cd /var/www/
    - Mit nano die Dateien nacheinander öffnen: nano index.php grafik.php
    - Den Code oben aus dem Beitrag #10 markieren (nicht 'Alles markieren' !), rechte Maustaste und Kopieren.
    - Das PuTTY Fenster auswählen und die rechte Maustaste drücken.
    - Anschließend nano beenden und speichern, durch die Tastenkombination: STRG + x danach die Taste y und dann ENTER drücken

  • Also folgendes


    habe alles nocheinmal mit nano manuell (ohne jegliches copy paste)
    eingegeben geht trotzdem nicht.


    dann habe ich folgende radikle variante gemacht:
    1.

    PHP
    <?php
    echo "1";
    //header ('Content-Type: image/png');
    echo "2";
    ?>


    jetzt bekomme ich als ausgabe


    12


    danach den kommentar entfernt


    PHP
    <?php
    echo "1";
    header ('Content-Type: image/png');
    echo "2";
    ?>



    nichts, nur auf den Bildschirm ein kleines Grafiksymbol einer umgeblaetterten Seiten


    sagt dir das etwas.
    Wenn nicht hoeren wir auf, ich will dir nicht deinen ganzen Abend versauen.



    Gruss W.G.

  • header ist nur nach nix anderem davor möglich, Dein echo 1 führt hier zum Problem
    [hr]
    Ich will's mal dahingehend präzisieren, dass keine Ausgabe erfolgen darf (z.B. auch kein Leerzeichen vor dem ersten <?php), bevor Du den header sendest.

  • Jungs ich danke euch :thumbs1:


    es geht, schwere Geburt, war noch in image ein tippfehler.
    Ist php hier wirklich so restrkitiv in der Syntax.
    wo steht das habe ich bis jetzt noch nicht gefunden.


    Also allen beteiligten danke und vile Spass mit euerem Pi.
    Hatte schon die Hoffnung aufgegeben.



    Gruss W.G.