Hi zusammen,
ich habe ein kleines Script geschrieben, das über ein Formular hochgeladene Fotos zunächst verkleiner und anschließend in das endgültige Zielverzeichnis verschiebt. Hierfür verwende ich folgenden PHP-Code:
Zur Erklärung:
Die Variablen $zeile[x] sind Zeilen, die aus einer SQL-Datenbank ausgelesen werden. Das Format der Fotos wird bereits beim Upload ermittelt und als "hoch" bzw. "quer" in der Datenbank hinterlegt. Mit diesem Script sollen Fotos, die in den Ordner "/bilder/cache" geladen wurden skaliert und anschließend in einen Zielordner "/bilder/fotos/gallery/..." verschoeben werden. Die Skalierung soll nur erfolgen, wenn das Foto größer als 800x600 ist.
Nun zum Problem:
Für Fotos bis zu einer AUflösung von 1024x768 funktioniert alles wunderbar. Sobald jedoch ein größeres Bild hinzugefügt wird stürzt das Script (Dieser Code ist Teil eines Scripts, welches innerhald einer endlos-Schleife in bestimmten Zeitintervallen gewissen Funktionen, wie die Skalierung, ausführt) ab.
Hat jemand eine Idee woran das liegen könnte? Kann PHP etwa nicht mit größeren Formaten umgehen?
Vielen Dank schonmal im Voraus für eure Hilfe!
stinger133
ich habe ein kleines Script geschrieben, das über ein Formular hochgeladene Fotos zunächst verkleiner und anschließend in das endgültige Zielverzeichnis verschiebt. Hierfür verwende ich folgenden PHP-Code:
PHP-Code:
//Neues Bild aus JPEG-Datei erstellen
header("Content-type: image/jpeg");
$bild =@imagecreatefromjpeg("../bilder/cache/".$userfile_name);
if(!$bild){$error_message = "Could not load imagefile";}
$imagesize=GetImageSize("../bilder/cache/".$userfile_name);
if(!$imagesize){$error_message = "Could not establish imagesize";}
$width=$imagesize[0];
$height=$imagesize[1];
//Neue Groesse setzen
if($zeile[3]=="quer" and $width>800)
{
$new_width = 800;
$faktor = 800 / $width;
$new_height = $height * $faktor;
}
else
{
if($zeile[3]=="hoch" and $height>800)
{
$new_height = 800;
$faktor = 800 / $height;
$new_width = $width * $faktor;
}
else
{
$new_height = $height;
$new_width = $width;
}
}
//skaliertes Bild erstellen
$bild_resized = @imagecreatetruecolor($new_width, $new_height);
if(!$bild_resized){$error_message = "Could not create blank image";}
if(!@imagecopyresampled($bild_resized, $bild, 0, 0, 0, 0, $new_width, $new_height, $width, $height)){$error_message = "imagecopyresampled faled!";}
if(!@imagejpeg($bild_resized, "../bilder/fotos/gallery/".$zeile[1]."/".$userfile_name)){$error_message = "Could not create jpeg-file";}
//Originalbild zerstoeren
if(!@imagedestroy($bild)){$error_message = "Could not destroy image";}
//Datenbank aktualisieren
$abfrageerg="update fotos set Skaliert='1' where ID='".$zeile[4]."'";
$abfrage=mysql_query($abfrageerg);
//Datei des Originalbilds vom Server loeschen
if(!@unlink("../bilder/cache/".$userfile_name)){$error_message = "Could not delete cache-file";}
Die Variablen $zeile[x] sind Zeilen, die aus einer SQL-Datenbank ausgelesen werden. Das Format der Fotos wird bereits beim Upload ermittelt und als "hoch" bzw. "quer" in der Datenbank hinterlegt. Mit diesem Script sollen Fotos, die in den Ordner "/bilder/cache" geladen wurden skaliert und anschließend in einen Zielordner "/bilder/fotos/gallery/..." verschoeben werden. Die Skalierung soll nur erfolgen, wenn das Foto größer als 800x600 ist.
Nun zum Problem:
Für Fotos bis zu einer AUflösung von 1024x768 funktioniert alles wunderbar. Sobald jedoch ein größeres Bild hinzugefügt wird stürzt das Script (Dieser Code ist Teil eines Scripts, welches innerhald einer endlos-Schleife in bestimmten Zeitintervallen gewissen Funktionen, wie die Skalierung, ausführt) ab.
Hat jemand eine Idee woran das liegen könnte? Kann PHP etwa nicht mit größeren Formaten umgehen?
Vielen Dank schonmal im Voraus für eure Hilfe!
stinger133
Kommentar