hawkmaster: ImageCreateFromPNG Problem, Wie debuggen?

Hallo zusammen,
ich möchte einen "Druck" Button (Bildfeld) auf einem Formular erstellen.
Die Besonderheit daran ist, dass die Beschriftung variieren kann und ich die Grafik dynamisch mit "ImageCreateFromPNG" erstelle.

So sieht das Bildfeld aus.
Die Grafikbearbeitung findet mit dem File "createImage.php" statt.

  
input  name="image_print2" type="image" id="image_print2"  src="inc/createImage.php?text=<?php echo "DRUCKEN"; ?>&amp;align=center&amp;valign=center&amp;type=button1" width="250" height="45"   />  

In dem Script createImage.php wird dann die Grundgrafik definiert und der Text darübergelegt.

  
DEFINE("BUTTONIMAGE1","printer_button_printer.png");  
if(isset($_GET['type'])){  
...  
	elseif($_GET['type'] == "button1"){  
			  
			$pic = BUTTONIMAGE1;  
			$fontcolor = FONTCOLOR;  
			$fontsize = FONTSIZE;  
	}  
...  
}  
$pic = ImageCreateFromPNG($pic);  
.....  

Das komische ist: In einem anderen Script setze ich "createImage.php" genauso ein und hier klappt alles einwandfrei.
Jetzt aber wird die Grafik nicht erstellt und es erscheint einfach ein Default Button mit dem Text "Daten absenden".

Das Problem ist das ich nicht weiss wie ich das debuggen kann.
Denn es bringt nichts ein "exit" irgendwo einzubauen oder eine Echo Ausgabe zu machen. Sobald man das tut erscheint wieder immer nur "Daten absenden"

Die Verzeichnispfade habe ich schon zig mal überprüft
Bin für jede Idee dankbar.

vielen Dank und viele Grüße
hawk

  1. Hi,

    ich möchte einen "Druck" Button (Bildfeld) auf einem Formular erstellen.
    Die Besonderheit daran ist, dass die Beschriftung variieren kann und ich die Grafik dynamisch mit "ImageCreateFromPNG" erstelle.

    Dann solltest du auf jeden Fall ein alt-Attribut angeben, um das Formular benutzbar zu halten.

    Jetzt aber wird die Grafik nicht erstellt und es erscheint einfach ein Default Button mit dem Text "Daten absenden".

    D.h., ein INPUT type=image wird im HTML aber schon erstellt?
    Und lediglich das Bild kann nicht angezeigt werden, weil es Fehler enthält?

    Das Problem ist das ich nicht weiss wie ich das debuggen kann.
    Denn es bringt nichts ein "exit" irgendwo einzubauen oder eine Echo Ausgabe zu machen. Sobald man das tut erscheint wieder immer nur "Daten absenden"

    Na logisch, ein abgebrochenes Script oder eine echo-Ausgabe, die ziemlich sicher keine gültigen Bilddaten darstellt, ist ja auch nichts, was ein Browser als Bild anzeigen kann.

    Kommentiere die Angabe eines Content-Type-Headers aus, und rufe das Script mit den aktuell verwendeten Parametern direkt über die Adresszeile deines Browsers auf.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. Hallo Chris,
      recht herzlichen Dank für den guten Tipp.
      Im Browser bekomme ich nun tatsächlich Fehlermeldungen und kann dem Problem auf den Grund gehen.
      Wenn alles ok sein sollte, müsste das Bild ja dann angezeigt werden oder?

      Ich habe noch zwei "Warnings" wo ich aber nicht recht weiss was sie bedeuten.
      Warning: imagettfbbox() expects parameter 1 to be double, string given in createImage.php on line 116

      Warning: imagettftext() expects parameter 2 to be double, string given in createImage.php on line 156

      vielen Dank und viele Grüße
      hawk

    2. Hallo ChrisB,

      vielen Dank nochmals für deinen wertvollen Tipp.
      erst dadurch konnte ich dem Problem weiter auf die Schliche kommen
      Die Ursache das die Grafik nicht dargestellt wurde, war so simpel wie auch schwerwiegend.
      Es gibt im Script eine Font Angabe:
      DEFINE("FONT","arial.ttf");

      Die wird später gebraucht für
      imagettfbbox($fontsize, $textangle, FONT, $text);

      und dieses Fontfile hatte ich in diesem Fall nicht mit kopiert.
      Im anderen funktionsfähigen Script war es natürlich drin.

      vielen Dank nochmals:
      hawk

  2. Hello,

    Das Problem ist das ich nicht weiss wie ich das debuggen kann.
    Denn es bringt nichts ein "exit" irgendwo einzubauen oder eine Echo Ausgabe zu machen. Sobald man das tut erscheint wieder immer nur "Daten absenden"

    Bisschen konfus, oder?
    Wo steckt denn nun der Fehler?

    Trenne erstmal in

    • Bilderzeugung
    • HTML-Generierung
    • Steuerfluss

    und dann kontrolliere jeden Aufgabenblock einzeln.

    Und Blindflugdebuggung wird hier keiner drauf haben. Du müsstest schon mal den relevanten Code rausrücken.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de