Schmidt: Bildausgabe ohne Serverlast

Hallo.

Ich möchte ein Bild ausgeben und beim Aufruf dieses Bildes PHP-Code ausführen.

So geht es:

  
<?  
//Sonstiger PHP Code ohne Ausgabe  
  
header("Content-Type: image/jpeg");  
$im = imagecreatefromjpeg("bild.jpg");  
imagejpeg($im);  
?>  

Da das ausgegebene Bild immer das selbe ist möchte ich es nicht immer wieder neu einlesen und erzeugen lassen. Ich dachte daran die Bildinformationen direkt ausgeben zu lassen.

Ich habe folgendes versucht:
-bild.jpg in bild.php umbenannt. So müssten die Informationen der Datei gleich geblieben sein.
-in bild.php an erster stelle ohne Leerzeichen davor und dahinter <? ?> eingefügt und dazwischen header("Content-Type: image/jpeg"); .

In dieser Form also:
<? header("Content-Type: image/jpeg"); ?>ÿØÿà...

Meine Hoffnung, dass dabei das Bild ausgegeben wird wurde nicht erfüllt.

Hat jemand einen Vorschlag?

Es geht darum den Server möglichst wenig arbeiten zu lassen.

Ich danke euch.

  1. Tach,

    Ich möchte ein Bild ausgeben und beim Aufruf dieses Bildes PHP-Code ausführen.
    So geht es:
    <?

    ja, so geht es, wenn du Glück hast. Wenn du sichergehen willst, schreibe die öffnenden Tags <?php bitte aus und verlasse dich nicht auf short_open_tags=on

    $im = imagecreatefromjpeg("bild.jpg");
    imagejpeg($im);

    Auweia. Das ist tatsächlich sehr umständlich - noch dazu wird das JPEG-Bild dabei erst auf dem Server dekomprimiert und dann wieder erneut als JPEG komprimiert. Das ist immer mit einem zusätzlichen (möglicherweise sichtbaren) Qualitätsverlust verbunden.

    Für das, was du vorhast, ist readfile() prädestiniert.

    So long,
     Martin

    --
    Ich liebe Politiker auf Wahlplakaten.
    Sie sind tragbar, geräuschlos, und leicht wieder zu entfernen.
      (Loriot, deutscher Satiriker)
    1. Hi,

      Ich möchte ein Bild ausgeben und beim Aufruf dieses Bildes PHP-Code ausführen.
      So geht es:
      <?

      ja, so geht es, wenn du Glück hast. Wenn du sichergehen willst, schreibe die öffnenden Tags <?php bitte aus und verlasse dich nicht auf short_open_tags=on

      Auch damit musst du "Glueck" haben.

      Es ist ja keineswegs ausgeschlossen, dass auch die binaeren Bilddaten irgendwo die Bytes enthalten, die der Zeichenkette <?php entsprechen. Dass danach dann aber auch noch sinnvoller PHP-Code folgt, waere ein wenig arg viel Zufall (und wenn waere auch nicht unbedingt anzunehmen, dass dieser etwas macht, was man will).

      MfG ChrisB

    2. Für das, was du vorhast, ist readfile() prädestiniert.

      Danke.

      Ich habe ja aber vor, die Bilddaten überhaupt nicht jedes mal neu ein zu lesen, da diese sich nicht ändern.

      Eine Idee?

      1. Hi,

        Für das, was du vorhast, ist readfile() prädestiniert.

        Danke.
        Ich habe ja aber vor, die Bilddaten überhaupt nicht jedes mal neu ein zu lesen, da diese sich nicht ändern.

        ich dachte, du willst sie an den Client ausgeben? Jetzt doch wieder nicht? Du hast aber schon nachgelesen, was readfile() macht, oder?

        Ciao,
         Martin

        --
        Niemand ist überflüssig: Er kann immer noch als schlechtes Beispiel dienen.
      2. Hi,

        Ich habe ja aber vor, die Bilddaten überhaupt nicht jedes mal neu ein zu lesen, da diese sich nicht ändern.

        Expires-Header & Cache-Control-Header senden, damit das Bild nicht erneut vom Client angefordert wird. Conditional-Header (ETag und/oder If-Modified-Since) senden, damit, falls obiges nicht greift, der Client das nächste Mal wenigstens einen Conditional-Request sendet, den dein Script dann (ggf.) nicht erneut mit Daten, sonden nur mit einem 304er-"hast du schon" beantworten muß.

        In meinem Lion IBrowse gibt es ein "Embedded"-Bild, für das obiges verwendet wird.

        Du kannst dein externes Bild nehmen, dessen Timestamp nutzen und dann (ggf.) mit readfile() rausjagen ...

        Gruß, Cybaer

        --
        Man kann doch sehr leicht jenen tugendhaften Menschen begegnen, (...) die eine Art "unkrümmbaren Zeigefinger" besitzen, der ständig den kalten Wind des Rechthabens ausströmt. (Wolfgang Huber, Bischof)
        Die Tugend jagt nicht den Teufel, sondern den Sündhaften. Damit wird sie zum Terror. (Hans-Ulrich Jörges, Journalist)
  2. Hallo Schmidt.

    Da das ausgegebene Bild immer das selbe ist möchte ich es nicht immer wieder neu einlesen und erzeugen lassen. Ich dachte daran die Bildinformationen direkt ausgeben zu lassen.

    Mach doch einfach mittels [code=php]header("Location: $absolute_uri_des_bildes");[/code] eine Redirect auf das Bild. So wird dein PHP-Code ausgeführt und das Bild angezeigt.

    Servus,
    Flo