ImageCreateFromPNG mit Text und Hintergrundbild

  • PHP

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • ImageCreateFromPNG mit Text und Hintergrundbild

    Hi,
    ich habe versucht, ein paar Zeilen auf ein Hintergrundbild zu schreiben, das klappt aber nicht so ganz. Erstmal der aktuelle Code:

    PHP-Quellcode

    1. <?php
    2. header("Content-type: image/png");
    3. $zeit = date("H:i:s", time());
    4. $datum = date("d.m.Y", time());
    5. $ip = $_SERVER['REMOTE_ADDR'];
    6. $breite = 500;
    7. $hoehe = 65;
    8. $bild = imagecreate($breite, $hoehe);
    9. $background = imagecreatefrompng('background.png');
    10. $textcolor = Imagecolorallocate ($bild, 0, 0, 0);
    11. imagefilledrectangle($bild, 0, 0, $breite, $hoehe, $background);
    12. imagestring($bild, 4, 10, 10, 'Uhrzeit: '.$zeit, $textcolor);
    13. imagestring($bild, 4, 10, 25, 'Datum: '.$datum, $textcolor);
    14. imagestring($bild, 4, 10, 40, 'Deine IP: '.$ip, $textcolor);
    15. imagepng($bild);
    16. imagedestroy($bild);
    17. ?>
    Alles anzeigen


    Ich geb's zu, der ist größtenteils aus einem Forum ;)
    Der Fehler darin ist, dass wenn man die Datei aufruft, der Hintergrund (also background.png) schwarz ist. Außerdem wollte ich noch fragen, wie man das ganze dann als *.gif Datei speichert, die bei jedem aufrufen Dynamisch erzeugt wird und immer aktuell ist. Also man gibt z.B. "bild_NAME.gif" ein, und irgendwo erscheit dann hat im Beispiel "NAME". Geht das überhaupt?

    Jedenfalls danke schoneinmal im Vorraus,
    m0t0
  • Hi,

    mit imagefilledrectangle() wird das schonmal nichts. Damit kannst du höchstens den Hintergrund schwarz füllen - oh, exakt das passiert ja. ;)

    Die Funktion imagecopy ist da besser: imagecopy($bild, $background, 0, 0, 0, 0, imagesx($background), imagesy($background);

    Sieh dir am besten mal die Referenz im PHP-Handbuch an. Falls du die Hintergrundgrafik auf die Größe des neuen Bildes stretchen willst, solltest du imagecopyresized() nehmen.

    Edit: Da war ja noch mehr. Okay, also eine Gif-Grafik erzeugst du analog zu einer PNG-Grafik. In der vorletzten Zeile rufst du einfach imagegif() anstatt imagepng() auf. Den Namen kannst du ebenfalls einbringen. Dazu wertest du den angeforderten Dateinamen aus, der z.B. in $_SERVER['REQUEST_URI'] drin stecken sollte. Voraussetzung dafür ist aber, dass du alle Zugriffe vom Typ bild_NAME.gif auf dein Script weiterleitest, z.B. mit mod_rewrite.
  • Alles ist möglich.
    Mittels Mod_Rewrite, sogar ziemlich simple.

    Quellcode

    1. DirectoryIndex bild_NoName.gif
    2. RewriteEngine On
    3. RewriteRule ^bild_(.*).gif$ /bild.php?name=$1 [L]

    Schreibe das in eine .htaccess Datei und kopiere diese in dem Ordner mit bild.php

    Zum andere sei dir gesagt, dass du nicht imagefillrectangle, sondern PHP: imagecopyresized - Manual benutzen solltest, wenn du ein Bild kopieren und die Größe ändern willst.

    Gruß
    Broken Sword