ganzata: Bild erstellen, einbinden, löschen

Hallo!
Ich habe ein Script erstellt, dass ein Bild per ImageJPEG-Methode erstellt und in einem bestimmten Ordner speichert. Anschließend lass ich dieses Bild per echo "<img src..>"; ausgeben. Meine Frage: Wie lösche ich das erstellte Bild wieder?

Wenn ich unlink benutze, dann funktioniert die Ausgabe per echo nicht mehr. Hat jemand eine Idee für mich?

Grüsslein :-*

  1. Hallo!

    Ich habe ein Script erstellt, dass ein Bild per ImageJPEG-Methode erstellt und in einem bestimmten Ordner speichert. Anschließend lass ich dieses Bild per echo "<img src..>"; ausgeben. Meine Frage: Wie lösche ich das erstellte Bild wieder?

    Wenn ich unlink benutze, dann funktioniert die Ausgabe per echo nicht mehr. Hat jemand eine Idee für mich?

    Speichere das Bild nicht.
    Binde das image ca so ein: <img src="erstellebild.php?paramter"/>
    Gib dem Skript alle Parameter mit die es zum Erstellen braucht.
    Im Skript erstellebild.php gibts du das erstellte Image direkt aus ohne es auf der Platte zu speichern.

    mfg
      frafu

    1. Das ist ja eine interessante Methode. Doch so ganz hab ich das noch nicht verstanden!

      Meinst du mit Parameter, dass ich sowas wie <img src="erstellebild.php?breite=70&hoehe=70&name=bildxx"/> in meine Datei packen soll?

      Und auch das "Im Skript erstellebild.php gibts du das erstellte Image direkt aus" ist mir auch noch ein wenig unklar. Inwiefern ausgeben in der erstellebild.php? Einfach mit der ImageJPEG() Funktion?

      1. Hallo!

        Meinst du mit Parameter, dass ich sowas wie <img src="erstellebild.php?breite=70&hoehe=70&name=bildxx"/> in meine Datei packen soll?

        Ganau.

        Und auch das "Im Skript erstellebild.php gibts du das erstellte Image direkt aus" ist mir auch noch ein wenig unklar. Inwiefern ausgeben in der erstellebild.php? Einfach mit der ImageJPEG() Funktion?

        Ja, die ImageJPEG Funktion kann auch direkt die Daten ausgeben. Du läßt den Parameter filename einfach weg.
        In der Doku dazu sind auch einige Kommentare. Suche auf der Seite einfach mal nach header("Content-type: image/jpeg");
        Dieses Beispiel hilft dir bestimmt weiter.

        mfg
          frafu

        1. Also ich habe es jetzt so gemacht, dass ich KEINE Parameter benötige für mein Bild, sondern beim Aufruf der erstellebild.php einfach ein Zufallsbild ausgegeben wird.

          Wenn ich das header("Content-type: image/jpeg"); nicht in meinem Script stehen habe, dann gibt er mir einen Zeichensalat zurück. Schreibe ich es rein, dann bekomme ich ein wunderschönes Bild.

          Mein Problem: Das Script muss in meine Hauptdatei included werden, und sobald ich das mache, bekomme ich folgenden Fehler:

          Warning: Cannot modify header information - headers already sent by (output started at ../index2.php:5) in ../erstellebild.php on line 55

          und line 55 ist bei mir header("Content-type: image/jpeg");.

          Wisst ihr, was das zu bedeuten hat und wie ich es löse?

          1. Mein Problem: Das Script muss in meine Hauptdatei included werden, und sobald ich das mache, bekomme ich folgenden Fehler:

            Denkfehler: Wenn das PHP-Skript ein Bild liefert, wird es nicht per include eingebunden, sondern ganz einfach als <img src="bild.php"...> referenziert.

            Gruß, Volker

            1. Ihr Drei seid meine persönlichen Götter!!

              Danke euch allen, endlich klappt es, wie es soll :)

              1. Ihr Drei seid meine persönlichen Götter!!

                Son Mist! Wieder ne Chance verpasst mich zum Gott aufzuschwingen. Naja. Bleibt ja noch der Plan mit der Weltherrschaft...

        2. Und was ich im vorigen post vergessen hatte: hinter der Fehlermeldung ist dann schon angesprochener zeichensalat zu sehen :/

      2. Hallo,

        Das ist ja eine interessante Methode.

        ja, aber eigentlich ganz normal. ;-)

        Doch so ganz hab ich das noch nicht verstanden!

        Es ist im Grunde ganz einfach: Das PHP-Script erzeugt eine Ausgabe, die an den Browser geschickt wird. Meistens ist es so, dass der Browser ein Script aufruft und dann ein HTML-Dokument erwartet.
        Und wenn ein Script als src-Adresse eines img-Objekt referenziert wird, muss es eben direkt die Bilddaten liefern, die der Browser an dieser Stelle erwartet.

        Meinst du mit Parameter, dass ich sowas wie <img src="erstellebild.php?breite=70&hoehe=70&name=bildxx"/> in meine Datei packen soll?

        Ja, zum Beispiel. Und dein Script kann diese Werte dann als $_GET['breite'] oder $_GET['name'] abrufen und darauf reagieren.

        Und auch das "Im Skript erstellebild.php gibts du das erstellte Image direkt aus" ist mir auch noch ein wenig unklar. Inwiefern ausgeben in der erstellebild.php? Einfach mit der ImageJPEG() Funktion?

        Genau. Vorher musst du noch den zum Bildformat passenden MIME-Typ per HTTP-Header senden:
         header('Content-Type: image/jpeg');
        Wichtig ist außerdem, dass dein Script außer der header-Anweisung und dem ImageJPEG()-Aufruf _KEINE_ Ausgabe an den Browser sendet, da diese Ausgabe dann in die binären Bilddaten gemischt würde - was ein ziemliches Chaos ergibt, aber kein vernünftiges JPEG-Bild. Auch Leerzeichen oder Leerzeilen außerhalb von <?php ... ?> sind deshalb streng verboten.

        Aber sonst ist es eigentlich nicht weiter schwierig ... ;-)

        So long,
         Martin

        --
        Kleine Geschenke erhalten die Freundschaft.
        Große verderben sie aber meist auch nicht.