Header eines Bildes

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Header eines Bildes

    Hallo zusammen

    Wie kann ich die Header (cache und expires) eines generierten Bildes setzen?
    Das echo am schluss brauche ich, darum ist der type nicht img\png.

    Code:
    PHP-Code:
    <?php
    header
    ("Cache-Control: no-cache, must-revalidate"); 
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");  
    if (isset(
    $_GET['p1']) && isset($_GET['p2']) && isset($_GET['title']) && isset($_SESSION['guild'])) {
        
    session_start();
        
        
    // Bilder laden
        
    $imgsrc imagecreatefrompng("g_gfx_lib/form/".$_GET['p1'].".png"); // Bild 1
        
    $image2 imagecreatefrompng("g_gfx_lib/figures/".$_GET['p2'].".png"); // Bild 2
        // Bild Infos
        
    $width imagesx($imgsrc); // Höhe Hauptbild
        
    $height imagesy($imgsrc); // Breite Hauptbild
        
        
    $x imagesx($image2); // Höhe Bild 2
        
    $y imagesy($image2); // Breite Bild 2
        
        // Bilder erzeugen
        
    $img imagecreatetruecolor($width$height);
        
    imagesavealpha($imgtrue);
        
    // Transparente Farbe
        
    $trans_colour imagecolorallocatealpha($img000127);
        
    imagefill($img00$trans_colour);
        
        
    // Bild einfügen
        
    imagecopy($img$imgsrc0000$width$height);
        
    imagecopy($img$image20000$x$y);
        
        
    // Blablabla...

    // Hier fügt er noch Text ein und so...

        
        // Bild anzeigen
        
    imagepng($img,'guildimgs/guild_'.$_SESSION['guild'].'.png');
        
    // Speicher freigeben
        
    imagedestroy($img);
        
        
        echo(
    '<img src="guildimgs/guild_'.$_SESSION['guild'].'.png" />');
    }
    ?>

    Wäre froh um ein wenig Hilfe

    Danke und MfG
    Onyx


    PS: So wies oben steht funktionierts nicht..

  • #2
    Falsche Vorgehensweise! Du musst eine Scriptdatei für Bild erzeugung haben, etwa bild.php, darin setzt du stink normale Header-Info für Bilddatei ab, erzeugt das Bild und sende die Bilddaten.

    In deinem Hauptscript machst du einfach:

    <img src="bild.php?para1=...&para2=..." alt="..." />

    Kommentar


    • #3
      Hmm verstehe.. aber dann ist der Pfad in den Eigenschaften der Imagedatei falsch...
      gibts da eine Möglichkeit dafür?

      Kann man denn nicht im Nachhinein die headers für das kreierte Bild setzen?

      Kommentar


      • #4
        aber dann ist der Pfad in den Eigenschaften der Imagedatei falsch...
        Hä?

        Kommentar


        • #5
          Du willst doch das Bild on the fly erzeugen? Dann ist mein Vorschlag genau richtig. Es gibt keinen Pfad zu einem Bild in diesem Fall, sondern nur zu der bild.php, das Bild existiert physikalisch auf dem Server nicht.

          Oder was willst du eigentlich?

          Kommentar


          • #6
            Ich verstehe schon, dass deine Lösung richtig ist Klar ist es so machbar, aber siehe z.B. im Script:
            imagepng($img,'guildimgs/guild_'.$_SESSION['guild'].'.png');
            heisst ich speichere das Bild z.B. so: "guildimgs/guild_1" ab.

            Dass es auf deine Art geht ist mir klar, möchte aber trotzdem noch abklären, ob meine Alternative möglich ist


            MfG
            Onyx


            EDIT: Ich meine damit: Kann ich nach der oben gennanten Quote im Script die Header der Imagedatei abwandeln?
            Zuletzt geändert von Onyxagargaryll; 11.06.2008, 11:18.

            Kommentar


            • #7
              Ähm ... du legst die Datei in Filesystem ab, also kannst du auch so machen wie du's vorhast, aber denke mal an die Leichen nachher in deinem Filesystem. Außerdem was willst du denn mit header? Ich kann dir nicht ganz folgen.

              Kommentar


              • #8
                @Threadstarter: Um Header innerhalb des PNGs abzusetzen, mußt du dieses via PHP-Skript ausgeben (also nicht nur erzeugen).

                Viel einfacher geht es wahrscheinlich via .htaccess/Apache-Konfiguration. Ich denke, das muß dort irgendwie gehen, daß du für deine Bildverzeichnisse globale Caching-Optionen einstellenm kannst.

                Kommentar


                • #9
                  Also ich mach mal ein paar ausschweifende Erklärungen ^^

                  AJAX-Request auf diese Datei. Jemand will ein Bild kreieren, welches sich aus mehreren bereits vorhandenen PNGs zusammensetzt ( siehe Abschmitt "Bilder laden").
                  Das kreierte Bild wird als Gildenwappen gespeichert (guild_xy -> xy=ID der Gilde).
                  Dieses Bild bleibt bestehen als ein Bild so auf dem Server.

                  Wenn jetzt z.B. der Administrator das Bild ändert, wird bei ihm als Resultat immernoch das alte (gecachte) angezeigt.
                  --> Darum muss ich den Expries und Cache-Control header setzen.
                  (Das ändern des Bildes kann sich übrigens im auch im Sekundentakt ändern - d.h. ich brauch den header ^^)


                  Ich hoffe damit ist einiges klarer

                  MfG
                  Onyxagargaryll

                  Kommentar


                  • #10
                    @pekka:
                    Viel einfacher geht es wahrscheinlich via .htaccess/Apache-Konfiguration.
                    Puh oO Naja da habe ich kA, das müsst ich nachschauen...
                    kann sein dass ich ne Weile nicht antworte ^^

                    Aber wahrsch. ist dann die Lösung von asp2php einiges einfacher :P

                    MfG

                    Kommentar


                    • #11
                      Wenn jetzt z.B. der Administrator das Bild ändert, wird bei ihm als Resultat immernoch das alte (gecachte) angezeigt.
                      Dann dürfte das Anhängen eines zufälligen GET-Parameters an die Bild-URL das einfachste Mittel sein.

                      meinbild.php?zufall=12030489506984

                      Kommentar


                      • #12
                        @pekka
                        Diese kombination geht aber wieder nur in Verbindung mit der Lösung von asp2php ^^
                        ich kann ja nicht src="xy.png?zufal=298374" in den imagetag schreiben :P

                        Kommentar


                        • #13
                          ich kann ja nicht src="xy.png?zufal=298374" in den imagetag schreiben :P
                          Warum nicht?

                          Kommentar


                          • #14
                            Wenn jetzt z.B. der Administrator das Bild ändert, wird bei ihm als Resultat immernoch das alte (gecachte) angezeigt.
                            Und wenn der Admin, wenn er noch das alte Bild sieht, einfach Ctrl+F5 drückt? Dann sollte die Ressource unter Umgehung des Caches neu vom Server geladen werden
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar


                            • #15
                              Original geschrieben von jahlives
                              Und wenn der Admin, wenn er noch das alte Bild sieht, einfach Ctrl+F5 drückt? Dann sollte die Ressource unter Umgehung des Caches neu vom Server geladen werden
                              Das nenne ich Usability!

                              Kommentar

                              Lädt...
                              X