Hallo zusammen,
ich stehe vor einem Problem an dem ich nun bereits einige Tage sitze.
Sinn des Scripts:
Bilderupload für Galerie per ZIP; anschließend die Bilder in Thumbs und verkleinerte Originale manipulieren.
Problem:
Ich bekomme immer "Allowed memory size of 16777216 bytes exhausted (tried to allocate 6000 bytes) " nach einigen Bildern.
Die ersten x Bilder funktionieren einwandfrei und dann ist eben der temporäre Speicher voll..Ich habe schon alle mir bekannten Möglichkeiten um diesen wieder freizugeben ausprobiert -> Fehlanzeige.
Auch der Versuch die Aktionen über eingeforderte Mausklicks des Uploaders auszulagern um die automatische Speicherfreigabe nach Scriptende zu nutzen schafft keine Abhilfe.
Anbei mal der Code:
Dazu noch die Funktion zum Bilder :
Das ganze läuft atm auf xampp unter Vista mit 16MB Limit.
Ich hoff jemand von euch steigt da etwas mehr durch.
Gruß
ich stehe vor einem Problem an dem ich nun bereits einige Tage sitze.
Sinn des Scripts:
Bilderupload für Galerie per ZIP; anschließend die Bilder in Thumbs und verkleinerte Originale manipulieren.
Problem:
Ich bekomme immer "Allowed memory size of 16777216 bytes exhausted (tried to allocate 6000 bytes) " nach einigen Bildern.
Die ersten x Bilder funktionieren einwandfrei und dann ist eben der temporäre Speicher voll..Ich habe schon alle mir bekannten Möglichkeiten um diesen wieder freizugeben ausprobiert -> Fehlanzeige.
Auch der Versuch die Aktionen über eingeforderte Mausklicks des Uploaders auszulagern um die automatische Speicherfreigabe nach Scriptende zu nutzen schafft keine Abhilfe.
Anbei mal der Code:
PHP-Code:
define("FOLDER","../images/gallery/$_GET[galname]/");
define("THUMBFOLDER","../images/gallery/$_GET[galname]/thumbs/");
$galname = $_GET['galname'];
$dir=openDir(FOLDER);
$handle=opendir (FOLDER);
$i = 0;
while ($datei = readdir ($handle)) {
if(subStr($datei,-3,3)=="jpg") {
$i++;
//echo $datei;
}
}
closedir($handle);
$anzahl = $i;
if (empty($anzahl)) $anzahl = $_GET['anzahl'];
echo "ANZAHL: ".$anzahl;
$handle=opendir (FOLDER);
$start = $_GET['start'];
if (($start + 7)<$anzahl) $ende = $start+7; else $ende = $anzahl;
$newstart = $start+7;
echo "<br>ENDE: ".$ende;
$i = 1;
while ($datei = readdir ($handle)) {
if(subStr($datei,-3,3)=="jpg") {
if ($i >= $start && $i <= $ende) {
$orig = $datei;
resize($orig,$datei,100);
}
$i++;
if ((($start + 7)>=$anzahl) && $i=$anzahl) die ("Alles bearbeitet");
$newstart = $ende +1;
if ($i > $ende) die (
"<a href=\"uploadpic.php?step=4&start=$newstart&galname=$galname&anzahl=$anzahl\">
Bitte hier klicken um fortzusetzen</a>");
}
}
PHP-Code:
function resize($orig,$filename,$width)
{
$size=getImageSize(FOLDER.$orig);
$orig_width=$size[0];
$orig_height=$size[1];
$src=imageCreateFromJpeg(FOLDER.$orig);
if($orig_width>$width)
{
$factor=$orig_width/$width;
echo "bild zu groß";
$new_height = ($orig_height/$factor);
$new_width = ($orig_width/$factor);
} else {
$new_width = $orig_width;
$new_height = $orig_height;
echo "bild ok";
}
$dst=imageCreateTrueColor($new_width,$new_height);
$buffer=imageCopyResized($dst,$src,0,0,0,0,$new_width,$new_height,$orig_width,$orig_height);
$src = imagedestroy($src);
imageJpeg($dst,FOLDER.$filename,85);
$test = imagedestroy($dst);
if ($src==TRUE) echo "PIC WEG"; else echo "ERROR";
}
Das ganze läuft atm auf xampp unter Vista mit 16MB Limit.
Ich hoff jemand von euch steigt da etwas mehr durch.
Gruß
EDIT:
ein zeilenumbruch spendiert von kropff
Kommentar