GDLib "Allowed memory size" Error abfangen
Mario
- php
0 XaraX
Hallo,
Beim erstellen von Thumbnail-Bildern mittels GDLib wird in meinem Script der bekannte Fatale Error "Allowed memory size ... exhausted ..." erzeugt.
Dem kann ich nur entgehen, in dem ich dafür sorge, das keine weiteren Bilder sich im Speicher befinden durch ....
1. imagedestroy() nach imagecreate*****() - Das mache ich bereits
2. Erhöhung des Memory-Limits in der php.ini - Das kann ich nicht auf dem Produktiv-Server, auch nicht durch Anweisung im Script.
Mittels memory_get_usage() erhalte ich den aktuell dem Script zur Verfügung stehenden Speicher in Bytes.
Ich würde nun gerne, bevor überhaupt imagecreate****() ausgeführt wird, bestimmen, wieviel Speicher für die Operation benötigt wird.
ZielBildhöhe x ZielBildbreite x 3 (Farbtiefe) +
Originalgröße x Originalbreite x 3 (Farbtiefe) +
Speicher der durch die Funktionen ...
$imgA = imagecreatefromjpeg($file);
$imgB = imagecreatetruecolor($iNewW,$iNewH);
imagecopyresampled($imgB, $imgA, 0, 0, 0, 0, $iNewW, $iNewH, $infos[0], $infos[1]);
imagejpeg($imgB, $save);
genutzt wird (Hier weiß ich nicht, wie sich das ermitteln läßt).
Weiß jemand etwas über den Speicherverbrauch der obigen Funktionen? Ist meine Idee richtig?
Gruss und Dank, Mario
Nabend,
$imgA = imagecreatefromjpeg($file);
$imgB = imagecreatetruecolor($iNewW,$iNewH);
imagecopyresampled($imgB, $imgA, 0, 0, 0, 0, $iNewW, $iNewH, $infos[0], $infos[1]);
imagejpeg($imgB, $save);genutzt wird (Hier weiß ich nicht, wie sich das ermitteln läßt).
Weiß jemand etwas über den Speicherverbrauch der obigen Funktionen? Ist meine Idee richtig?
echo memory_get_usage()."<br>";
$imgA = imagecreatefromjpeg($file);
echo memory_get_usage()."<br>";
$imgB = imagecreatetruecolor($iNewW,$iNewH);
echo memory_get_usage()."<br>";
imagecopyresampled($imgB, $imgA, 0, 0, 0, 0, $iNewW, $iNewH, $infos[0], $infos[1]);
echo memory_get_usage()."<br>";
imagejpeg($imgB, $save);
echo memory_get_usage()."<br>";
es hilft also in Deinem Beispiel nichts, Du wirst es mit vielen Bildern austesten müssen.
Gruß aus Berlin!
eddi