Crowicrow: "Bild speicher unter" bei "ImageJPEG"

Hallo liebe Selfhtml-Foren-Gemeinde,

meistens finde ich dank eurer und anderer Antworten selbst eine Lösung für mein Problem, heute muss ich jedoch selbst eine Frage stellen.

Ich schreibe ein PHP-Script, das ein Bild mit Hilfe von imageCreateFromJPEG, ImageCreateTrueColor, ImageCopyResampled und ImageJpeg von einem Original JPEG verkleinert. Dieses Bild wird korrekt im Browser angezeigt.

Wenn ich nun aber über das Kontextmenue meines IE auf "Bild speichern unter" klicke, speichert der Browser nur als BMP.

Lokale Probleme mit dem Browserchache kann ich aussließen, da auf meinen beiden Rechnern dieser Fehler im IE auftritt und beide Browser chache-gesäubert sind. Firefox jedoch speichert mit "Grafik speichern unter" das Bild richtig als JPG.

Ach ja, die Funktion wird aufgerufen über eine URL mit der Endung ".jpg" oder ".JPG" über eine 404-Fehlerseite.

Hier der Quellcode:

<?

// Header Information für ein Bild
          header("Status: 200 OK");
          header("HTTP/1.1 200 OK");
          header("Cache-Control: no-cache, must-revalidate");
          header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
          header("Content-Type: image/jpeg");

// $ilddatei ist die absolute Adresse des Bildes auf dem Server
          $size=getimagesize($bilddatei);
          $breite=$size[0];
          $hoehe=$size[1];

$neueHoehe=intval($hoehe*$neueBreite/$breite);

$bilddatei = imageCreateFromJPEG($Absolute_Adresse_Des_Bildes);
          $bilddatei2 = ImageCreateTrueColor($neueBreite,$neueHoehe);

ImageCopyResampled($bilddatei2,$bilddatei,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);

ImageJpeg($bilddatei2, "", 100);

?>

Was ist mir da wohl entgangen?

Besten Dank, Crowicrow

  1. Hi!

    Die Wege des IE sind unergründlich - schon mal $SEOYC[1] befragt?

    Versuch einer Ursachenforschung:

    Ach ja, die Funktion wird aufgerufen über eine URL mit der Endung ".jpg" oder ".JPG" über eine 404-Fehlerseite.

    Warum dieses?

    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

    Warum jenes?

    off:PP

    [1] search engine of your choice

    --
    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
  2. Habe es inzwischen mehr zufällig selbst gelöst.

    Bilder, die nach dem Laden in den Browser noch gespeichert werden sollen, müssen im Cache liegen.

    Wenn man diese Zeilen

    header("Cache-Control: no-cache, must-revalidate");
               header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

    durch

    header("Cache-Control: post-check=0, pre-check=0");

    ersetzt, funktionierts einwandfrei. Die Bilder werden so im Chache abgelegt und können per "Bild speichern unter" vom Chache aus in den entsprechenden Ordner verschoben werden (so erklär ich mir das jedenfalls).