phpbar.de logo

Mailinglisten-Archive

[php] imagedestroy() mag nicht

[php] imagedestroy() mag nicht

Lennart Droste lennartdroste at web.de
Mon Nov 21 21:41:30 CET 2005



deutschsprachige PHP-Mailingliste <php at phpbar.de> schrieb am 21.11.05 20:54:18:

> der Grund ist ganz einfach. Das PHP-Skript wird auf dem Server abgearbeitet, 
> bevor der HTML-Code an den Browser ausgeliefert wird. Das bedeutet, daß Du 
> das Bild im PHP-Code schon gelöscht hast, bevor der Browser es über den 
> Verweis im HTML-Code laden kann.

Ich hatte es schon befürchtet. Naja, immerhin ist dann immerhin ausgeschlossen, dass mein Code noch Fehler enthält. Wenn auch nicht das gewünschte bei herauskommt.


> Ja. Du darfst das Bild nicht mit demselben PHP-Skript löschen, mit dem Du den 
> HTML-Code auslieferst. Es gibt da diverse Möglichkeiten. Ein Ansatz wäre, es 
> die Webbug-Methode (http://de.wikipedia.org/wiki/Webbug) einzusetzen.

Ok, das hat gedauert zu verstehen wie ich es programmieren sollte. Ich rufe jetzt in meinem ersten Skript nurnoch eine weitere php-Datei auf, die letztenendes das Vorschaubild erstellt. Löschen tut die ursprüngliche Datei ganz am Ende die Vorschaubilder dann. Mein Problem ist jetzt nur, dass das Vorschauskript kein Bild mehr ausgibt. 

$bildadresse = $_GET['bildadresse'];
$neue_breite = $_GET['neue_breite'];
$neue_hoehe  = $_GET['neue_hoehe'];
$temp_name   = $_GET['temp_name'];
// Gueltiges Bild, jetzt muss eine Vorschau davon erstellt werden
$groesse     = getimagesize($bildadresse);
$alte_breite = $groesse[0];
$alte_hoehe  = $groesse[1];
$end_hoehe   = intval($alte_hoehe * $neue_breite / $alte_breite);
$altes_bild  = imagecreatefromjpeg($bildadresse);
$end_bild    = imagecreatetruecolor($neue_breite, $neue_hoehe);
imagecopyresized($end_bild, $altes_bild, 0, 0, 0, 0, $neue_breite, $end_hoehe, $alte_breite, $alte_hoehe);
imagejpeg($end_bild, $temp_name.".jpg");
chmod($temp_name.".jpg",0777);
// Vorschaubild ausgeben
$bild = fopen($temp_name.".jpg","r");
header("Content-type: image/jpeg");
echo $bild;
fclose($bild);

Ich habe das Bild erstellt und öffne es nun, sage dem Browser "hier kommt ein jpg" und schicke ihm dann die gesamten Daten rüber. Wieso zeigt er mir es dann nicht an? Sicherlich habe ich etwas übersehen, aber was?

Grüße,

Lennart
__________________________________________________________________________
Erweitern Sie FreeMail zu einem noch leistungsstarkeren E-Mail-Postfach!		
Mehr Infos unter http://freemail.web.de/home/landingpad/?mc=021131


php::bar PHP Wiki   -   Listenarchive