Bildausgabe ohne Serverlast
Schmidt
- php
0 Der Martin
0 ChrisB0 Schmidt0 Der Martin
0 Cybaer
0 flowh
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.
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
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
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?
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
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
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