ImageCreateFromPNG mit Text und Hintergrundbild

  • PHP

  • m0t0
  • 1438 Aufrufe 3 Antworten

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
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.